高分求助串口问题(MSComm空间)

nousrei 2005-04-07 08:41:04
我现在在做一个串口的应用程序,通过MSComm控件向串口写入一些数据,但是在写入数据之前要先向串口写入一个BYTE数组,通过硬件的返回值来判断串口上连接的是不是正确的设备,也就是说我在写入这组数据之后希望能够马上获得返回值,我原来的做法是在写入用来识别的BYTE数组之后Sleep一段时间,然后通过OnCommMscomm时间捕捉串口中断(如果不Sleep,程序会将硬件确认的返回值和传输数据的返回值一起读入到串口的缓冲区中),获取串口缓冲区的数据,但是这样做似乎有的时候会有问题,而且在不同的计算机上面的运行结果会不同,请问有没有办法比较好的解决这个问题?能够解决程序在运行过程中,输入数据与输出数据能够按照一定顺序完成?谢谢!
...全文
179 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
dfyang 2005-04-13
  • 打赏
  • 举报
回复
为什么要用sleep而不用事件响应呢?
xift_2008 2005-04-13
  • 打赏
  • 举报
回复
还是用串口操作类CSerialPort来做比较好吧。在不同机器上都能用,无需注册。
sandboy2002 2005-04-08
  • 打赏
  • 举报
回复
http://www.blindpoint.net/bbs/ShowForum.asp?forumid=7
dirdirdir3 2005-04-08
  • 打赏
  • 举报
回复
死循环来判断的话就要设置timeout时间到了就表示发送失败。
nousrei 2005-04-08
  • 打赏
  • 举报
回复
你说的方法我明白,如果在写的过程中弹出对话框,让用户去确定这样就没问题,但是这样解决起来软件设计的就不是很好,弹出的对话框过多,用户会觉得厌烦。你说的运行其他的程序是指什么程序n呢?如果死循环来判断,当串口如果没连到硬件上运行程序,程序就会死掉。不知道怎么样解决这个问题。
dirdirdir3 2005-04-08
  • 打赏
  • 举报
回复
设置一个标志位,如硬件状态,flash状态等。在你接收到返回的数据后把相应的标志设置好。这样就可以控制了。或者用event也可以,不过接收数据时要用线程来接收。(接收和发送不能是同一个线程)。
zhuningdi 2005-04-08
  • 打赏
  • 举报
回复
有一个办法可以解决,MSCOMM可以实现数据触发调用中断。你在开串口发数据后,只需要运行其他程序,当有数据进来时(可以设置数据的长度来进行控制),去判断一下是不是正常就可以了。如果用时间去等待的话,实现同步太困难了。
nousrei 2005-04-08
  • 打赏
  • 举报
回复
因为底层的硬件已经编好程了,我只好适应硬件来编这个软件,因为底层是用flash来存储数据的,所以一开始要向硬件发送一个消息数组,硬件返回给我一个数组,我来判断硬件有没有做好准备,但是之后,我还要发送一个byte数组给硬件,让它执行擦除flash存储内容中的东西,所以我又要判断硬件的返回值来看flash是否擦除成功,然后再向硬件写数据,如此一来一去,就出现问题了。我数据可能还在往串口写,硬件还在处理的时候,我的程序已经执行到下一步了,主要是想实现通信的同步问题!!~求助!!!
legendhui 2005-04-08
  • 打赏
  • 举报
回复
不太明白你说的意思,你要判断串口是否连接上,只需要给串口发送那几个BYTE看它的返回值就可以了啊

MSComm控件确实有缺陷,建议你用串口类比较方便一些
nuaawenlin 2005-04-08
  • 打赏
  • 举报
回复
使用API比较好

注册可以使用regsvr32来进行,系统自带的
///////////////////////////////////////
通过硬件的返回值来判断串口上连接的是不是正确的设备
//////////////////////////////////////////

你打开串口的时候可以判断一下就可以了。
想判断另一端,不但困难,也没必要
54783szg 2005-04-08
  • 打赏
  • 举报
回复
http://www.vckbase.net/document/viewdoc/?id=1114
nousrei 2005-04-07
  • 打赏
  • 举报
回复
怎么还没有人来帮助我啊??这个问题困扰我很久了,希望大家能帮忙啊.这个程序很急,最近要交的,还有一个问题就是用MSComm控件时在没有安装VC的计算机上运行需要注册一下,怎么解决这个问题呢?
是表不是象我这种情况用API做比用MSComm好,我觉得MSComm控件在处理串口复杂的通信过程不是
很得力啊...

2,643

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 硬件/系统
社区管理员
  • 硬件/系统社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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