Visual Studio 2008 WriteFile

时间:2017-08-04 09:35:01

标签: c++ windows-ce

我正在使用VS2008来编译和开发我的应用程序。我需要接受Adc输入并通过RS232在WinCE6操作系统中通过一些终端如putty或hyperterminal进行串行打印。问题是,当我使用WriteFile函数时,它会给我以下错误。

 Error  3   error C2440: '=' : cannot convert from 'double' to 'char [32]'  c:\Users\Sohan\Downloads\uartdemo\uartdemo\src\main.c   137 Sohan_1

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

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); 

第一个写功能有效但第二个写功能无效。变量伏特会继续变化所以我应该怎么写它。请帮助..

1 个答案:

答案 0 :(得分:0)

搜索后我得到了一个问题的答案。 这对我有用.. 您可以使用sprintf()将double转换为字符串,但我实际上建议使用_snprintf()而不是因为sprintf()不考虑字符串是内存中固定长度的设备并且会溢出的事实如果你不看。 _snprintf()允许您指定out字符串的长度,只需确保将大小指定为小于实际分配的内存块的大小,因为_snprintf()如果必须将输出缩短,则不存储终止空字符

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

void ToString(char * outStr, int length, double val)

{

_snprintf(outStr,length,"%f",val);

}

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