本帖最后由 garcon0727 于 2019-6-23 14:38 编辑
- void uart::SendData(TCHAR* buffer, int len)
- {
- char lpOutBuffer[100];
- DWORD dwBytesWrite = 1; //一次最多传输一个字节
- COMSTAT ComStat;
- DWORD dwErrorFlags;
- BOOL bWriteStat;
- if (len == 0)
- {
- return;
- }
- ClearCommError(hCom, &dwErrorFlags, &ComStat);
- WideCharToMultiByte(CP_ACP, 0, buffer, -1, lpOutBuffer, 100, NULL, NULL);
- lpOutBuffer[len] = '\0';
- for (int i = 0; i < len; i++)
- {
- char send = lpOutBuffer[i];
- bWriteStat = WriteFile(hCom, &send, dwBytesWrite, &dwBytesWrite, NULL);
- PurgeComm(hCom, PURGE_TXCLEAR);
- if (!bWriteStat)
- {
- //写串口失败
- return;
- }
-
- }
- }
复制代码 调试的时候writefile的返回值也是1,我还把单片机收到的数返回到PC显示,但是用别人的串口助手就可以,自己做的就不行。
我用自己的串口助手发了几次数没反应,用别人的不仅会把11发出去,还会把我在自己的串口助手里面发送的值发送出去,这是什么原因啊?
|
评分
查看全部评分
我把数据抓出来了,上面有发送和接收的是用得别人的串口调试助手,我自己的只有发送但是没有接收,我还让开发板接收到数据就点亮LED,也没有反应。
评分
查看全部评分
下位机程序检查:1、用断点检查串口中断接收到的单个数据是否正确;2、添加计数变量,检测收到的数据量是否正确;3、前面两点都解决了,在就再分析处理函数是否正确。
评分
查看全部评分