Visual Studio 2008 WriteFile

Visual Studio 2008 WriteFile

本文关键字:WriteFile 2008 Studio Visual      更新时间:2023-10-16

我使用VS2008编译和开发我的应用程序。我需要在 WinCE232 操作系统中通过 RS6 输入并通过某些术语(如腻子或超级终端(进行串行打印。问题是当我使用WriteFile函数时,它给了我以下错误。

Error  3   error C2440: '=' : cannot convert from 'double' to 'char [32]'  c:UsersSohanDownloadsuartdemouartdemosrcmain.c   137 Sohan_1

我想从ADC通道获取输入,然后将其转换为电压后,我必须传输。我尝试使用常量 char 字符串并且它可以工作,但是当我从通道获取输入然后尝试它不起作用时。

HANDLE portHandle;
DWORD noOfBytesRead = 0;
DWORD bytesTransmitted = 0;   
DWORD firstChoice = 0;
BOOL retVal = FALSE;
char c="hello";
char transmit2Buffer[BUFFER_SIZE] = "7.8888v";
char volt[BUFFER_SIZE];
WriteFile(portHandle, transmit2Buffer, strlen(transmit2Buffer), &bytesTransmitted, NULL);
WriteFile(portHandle, volt, strlen(volt), &bytesTransmitted, NULL); 

第一个写入函数有效,但第二个不工作。 可变电压会不断变化,所以我应该怎么写。请帮忙。

搜索后,我得到了问题的答案。 这对我有用.. 你可以使用 sprintf(( 就像你所做的那样将双精度转换为字符串,但我实际上建议使用 _snprintf(( 来代替,因为 sprintf(( 没有考虑到字符串是内存中固定长度的设备,如果你不看它会溢出。_snprintf(( 允许您指定 out 字符串的长度,只需确保将大小指定为比实际分配的内存块小 1,因为如果 _snprintf(( 必须缩短输出,它不会存储终止的 null 字符。

我们使用 _snprintf(( 的一个例子是:

void ToString(char * outStr, int length, double val)
{
_snprintf(outStr,length,"%f",val);
}

在某些网站上得到了这个答案!!