求助:串口数据发送问题

longlianxi 2013-07-07 11:26:02
/*************************************************
函数名称 SendCmd
简要描述 发送串口命令数据
*************************************************/
void CradarDlg::SendCmd()
{

if(m_nSendTimes < 3)
{
CString SendString = ""; //memory the frame
BYTE m_bySendFrame2[7]={0xF1,0x1F,0x00,0x01,0xAA,0xDE,0xFF};


bCmdState = FALSE; //禁止其他命令的发送!!

for (int i = 0; i < 7; i++)
{
SendString += ( char ) m_bySendFrame[i]; //format the frame
}

m_Port.WriteToPort((LPCTSTR)SendString);
m_nTimer2s = SetTimer ( 2, 2000, 0 );// 启动1秒定时
m_nSendTimes ++ ;
}
else//发送三次都失败
{

bCmdState = TRUE; // 允许其他命令发送

m_nSendTimes= 0; //发送次数清零
KillTimer(2);
}
}

如上函数, 把m_bySendFrame2[7]={0xF1,0x1F,0x00,0x01,0xAA,0xDE,0xFF}作为RS232控制指令发送到
串口,到0x00就无法发送,实际上是F1 1F ,而不是F1 F 00 01 AA DE FF
为什么?如何改?
...全文
163 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
hdg3707 2013-07-08
  • 打赏
  • 举报
回复
默认的不知道是二进制还是字符,但如果默认的是二进制最好也设一遍
longlianxi 2013-07-08
  • 打赏
  • 举报
回复
我用serialport.cpp and serialport.h,看了源程序, m_Port.WriteToPort((LPCTSTR)SendString); 改为 m_Port.WriteToPort((LPCTSTR)SendString,7); 即可
ponydph 2013-07-08
  • 打赏
  • 举报
回复
引用 2 楼 hdg3707 的回复:
你得按二进制发送,不能按字符发送,字符的结束符就是\0,把0X00当成结束符了,你直接发送m_bySendFrame2,串口设置成二进制格式,不要设置字符型发送,好象是DCB里有一个fBinary字段就是设二进制还是字符发送
还有这种设置呢,不都是二进制码?
hdg3707 2013-07-08
  • 打赏
  • 举报
回复
你得按二进制发送,不能按字符发送,字符的结束符就是\0,把0X00当成结束符了,你直接发送m_bySendFrame2,串口设置成二进制格式,不要设置字符型发送,好象是DCB里有一个fBinary字段就是设二进制还是字符发送
rxguoblp 2013-07-08
  • 打赏
  • 举报
回复
缓冲区字节数设置的太小?
wumn29 2013-07-08
  • 打赏
  • 举报
回复
如果你要把\0后面的也发出去, 应该改一下这个接口WriteToPort的参数传指针和长度
smallcat1025 2013-07-08
  • 打赏
  • 举报
回复
想起来,当时也是用控件方式的时候出现了这个问题,后来改用文件读写的方式操作串口,就避免了这个问题,也就没再去研究了。。
叶恭介叶恭介 2013-07-08
  • 打赏
  • 举报
回复
m_Port.WriteToPort((LPCTSTR)SendString);为什么要用字符串发送了,可能WriteToPort发送时遇到\0就结束发送。按字节发送吧,看m_Port有没有用字节发送到串口的方法...
smallcat1025 2013-07-08
  • 打赏
  • 举报
回复
好像是不能用CSTRING啊,cstring类型遇到0会自动结束
smallcat1025 2013-07-08
  • 打赏
  • 举报
回复
我也碰到过这个问题,等我找找以前的工程看看。。

16,548

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • AIGC Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧