中易网

vb串口通信接收的问题如何解决?

答案:3  悬赏:30  
解决时间 2021-01-24 10:00
vb串口通信接收的问题如何解决?
最佳答案
粗略的看了一下,你的代码没有问题,我怀疑是其他的地方出现了问题。

给你一个我以前写的,模仿串口调试助手用串口控件的方法写的程序,你参考一下吧。

代码已发到你的邮箱。

补充:
接收就是在OnComm() 函数里啊,你的这段代码没有什么问题。
有没有做串口控件的事件映射啊:
BEGIN_EVENTSINK_MAP(CCuteComDlg, CDialog)
ON_EVENT(CCuteComDlg, IDC_MSCOMM1, 1 , OnComm, VTS_NONE)
END_EVENTSINK_MAP()
如果有的话,那接收应该没有问题的。况且即使只有发没有收,那也不会点发送就会出错的。

我发给你的代码你看到了吗,那是标准串口控件的用法,里面收发演示都有的,你详细看一下吧,应该是对你有所帮助的。


有人说是因为龚建伟的串口初始化部分代码有问题,才导致了后面的安全数组出现错误。

我一直是使用如下代码进行串口控件的初始化的,已经应用到过很多程序中没有出现过问题,你可以试试:
if(m_ctrlComm.get_PortOpen())
m_ctrlComm.put_PortOpen(FALSE);

m_ctrlComm.put_CommPort(1);   //选择com1
//输出方式为二进制方式
m_ctrlComm.put_InputMode(1);//text,binary
//m_ctrlComm.put_InBufferSize(64);
//m_ctrlComm.put_OutBufferSize(512);

m_ctrlComm.put_Settings("9600,n,8,1"); //波特率9600,无校验ndo,8个数据位,1个停止位

if( !m_ctrlComm.get_PortOpen())
m_ctrlComm.put_PortOpen(TRUE);//打开串口

m_ctrlComm.put_RThreshold(1);
//参数1表示每当串口接收缓冲区中有多于或等于1个字符时将引发一个接收数据的OnComm事件

m_ctrlComm.put_InputLen(0);  //设置当前接收区数据长度为0
//0---读接收缓冲区的所有内容
//n---读接收缓冲区的 n 个字符(或二进制码)

m_ctrlComm.get_Input();//先预读缓冲区以清除残留数据


这是VS2008中的代码,在VC6.0中请把函数前缀get_替换为
全部回答
关于VB串口通信,有一套非常好的技术资料,600M多,你在淘宝搜索"太阳雨VB串口通信技术资料"就可以找到,对指导您的VB串口编程非常有帮助.
我暂时保留我的看法!
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
It's January 1, 2000, and Your
手臂上有红胎记怎么处理?
怎样提高电脑电源
请问ENVI5.1如何查看NDVI值
领导让我帮忙给老婆写贺卡落款应该注意什么?
年会玩游戏时、领导抽奖与颁奖的主持词
大阪有什么好玩的
体育疗法练习常采用什么练习
五菱荣光发动机外表有灰尘怎样清洗
怎样激活天涯邮箱。
卖木门怎么介绍
请问地板砖要怎么贴
有没有大神入手了睡眼萌龙,感觉好用不
求解买家具选什么品牌
奥林匹电子城军颖电器怎么去啊,我要去那办事
推荐资讯
14岁刚满几天175能长到185吗喜欢打篮球
乳房里有肿块
主生产计划是指什么?
国庆结婚,现仍有很多朋友未发请帖,想用电子
谁有若白(杨洋)哪款手机?
身体健康和生理健康有什么关系
1111 猜一句话
康家屯村地址好找么,我有些事要过去
带水晶头的网线哪里买质量好?
2016年窗帘布艺十大品牌有哪些
夏天适合播种什么花啊各位前辈
征途守护战士怎么玩
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?