【问题标题】:Visual Studio 2008 WriteFileVisual Studio 2008 写入文件
【发布时间】:2017-08-04 09:35:01
【问题描述】:

我使用 VS2008 来编译和开发我的应用程序。我需要在 WinCE6 操作系统中通过诸如腻子或超级终端之类的某些终端进行 Adc 输入并通过 RS232 串行打印它。问题是当我使用 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 通道获取输入,然后将其转换为必须传输的电压。我尝试过使用常量 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); 

第一个 write 函数有效,但第二个无效。可变电压会不断变化,所以我应该怎么写。请帮助..

【问题讨论】:

标签: c++ windows-ce


【解决方案1】:

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

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

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

{

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

}

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多