永发信息网

MFC编串口通信时发送数据没问题但接收不到

答案:2  悬赏:10  手机版
解决时间 2021-02-27 15:17
调试了一下,发现下位机发送数据能进来OnComm函数里,也能顺利执行下去,但就是safearray_inp数组里得到赋值后显示它的长度是0,有点疑问了,恳请帮助,谢谢,可以正常发送!
程序如下:
【串口初始化函数】
m_Comm.SetCommPort(3);
m_Comm.SetSettings("9600,n,8,1");
m_Comm.SetInputMode(1);
m_Comm.SetRThreshold(1);
m_Comm.SetInputLen(0);
m_Comm.SetPortOpen(TRUE);//打开串口

【接收函数】
VARIANT variant_inp;
COleSafeArray safearray_inp;
LONG len,k;
BYTE rxdata[2048]; //设置BYTE数组 An 8-bit integerthat is not signed.
CString strtemp;
if(m_Comm.GetCommEvent()==2) //事件值为2表示接收缓冲区内有字符
{
variant_inp=m_Comm.GetInput(); //读缓冲区
safearray_inp=variant_inp; //VARIANT型变量转换为ColeSafeArray型变量
len=safearray_inp.GetOneDimSize(); //得到有效数据长度
strtemp.Format("到了里面,长度是%ld",safearray_inp.Get);
MessageBox(strtemp);
for(k=0;k safearray_inp.GetElement(&k,rxdata+k);//转换为BYTE型数组

for(k=0;k {
BYTE bt=*(char*)(rxdata+k); //字符型
strtemp.Format("%c",bt); //将字符送入临时变量strtemp存放

m_ColumnNum+=strtemp; //加入接收编辑框对应字符串
}
}
UpdateData(FALSE); //更新编辑框内容
最佳答案
1. 去网上下一个能用的串口调试助手,确保其能与下位机正常通讯,搞清楚下位机给上位机发送的内容到底是什么,也就是确认到底是编写的软件不对导致接收不正常还是下位机根本没有发出任何信息
2. 调试的时候在“variant_inp=m_Comm.GetInput(); //读缓冲区”设置断点,当下位机发出信息时,看是否能在断点处中断,若能说明确实有数据进入串口,触发了消息响应函数
3. 逐过程调试看“len=safearray_inp.GetOneDimSize(); //得到有效数据长度”,看变量len是否为0,比如我给上位机发送“1234”,len的值则会变为4;如果len仍为0,则应考虑你所参考的串口通讯的代码是否正确。
全部回答
你好! 数据转换最复杂 建议看 龚建伟的教程 如有疑问,请追问。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
如何看浮漂信号
白酒发酵缸缸口大好还是缸口小好
五年级《草房子》读后感(500字)
新会快餐地址在哪,我要去那里办事
为进一步明确诊断,下列哪项检查对诊断有帮助
如何将所有空值全部replace为0
换了路由器后上网速度依然很慢是什么原因
单相220伏变380伏6安的变压器功率是多少
女友说我心好,是什么意思
府河桥我想知道这个在什么地方
碧海物业滨海锦园管理处在什么地方啊,我要过
【寓意】有什么寓意?
比喻无聊,寂寞,孤独的成语
我的世界的蛋糕方块怎么吃
活瓷对人体有哪些好处?
推荐资讯
怎么形容猫头鹰的叫声 5分
和x3430性能差不多的771接口的cpu有什么,
行政管理人员都做什么工作?
看看还能被和谐吗
单选题为了进一步提高合成氨的生产效率,科研
黑界苏陌轩实力怎么样?QQ是3408597139吗?
我们男生做针线活的有没有??!!
济南浦融公司是诈骗公司。与握旗联合诈骗
小李维修店地址在什么地方,想过去办事
给领导送礼被拒怎么办?
学校的除了行政岗位和教师岗位还有其他类型的
在大学里违纪 填了违纪单子 可是没签字 没有
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?