高难度问题,这几个类怎么设置.

lvcjh 2003-05-20 08:02:02
我以前有一个VB程序,操作串口是这样做的,先发送数据到下位机,然后不断查询机器回应,我现在想做成多线程的,需怎么做(只通过一个串口).

我想这样做,不知行不行,先发送马上返回,然后有回应就处理.
一个主要问题是,如果下位机先没响应,然后突然想应,而前面还没发完.
他有没有冲突检测机制.

...全文
78 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
lvcjh 2003-05-27
  • 打赏
  • 举报
回复
谢谢qinghero(水阔长江),请接分哟。
qinghero 2003-05-23
  • 打赏
  • 举报
回复
不会自动清空,你要在程序里清空
lvcjh 2003-05-23
  • 打赏
  • 举报
回复
如果超时之后,他会自动清空其中内容么。
我们重发数据之前要不要发清空数据的指令。
lvcjh 2003-05-22
  • 打赏
  • 举报
回复
看来,为了保险,还是下位机一个个的发,然后等待返回。
你看这样做好吗。

监控界面对象(CWnd子类6个)------>下位机对象(CWnd子类1个)------->串口对象(无父类1个)
每秒钟发一个消息给下位机对象 一个结构队列(消息,下位机编号,串口号) 可发送字符串
启动超时时钟 发送完,启动时钟,并接收数据。 收到字符位即
接收完发消息到界面对象,否则发超时 发消息给下
同时封装指信今,不同机器换掉这 位机对象

请问一下还有哪些问题还没考虑到。
qinghero(水阔长江) thanks.
你以前一个接线程,一个发线程,会不会出现线程调度出现的数据不完整呢。 下位机是否只接收到完整的数据才回映,发果是这样一个错误数据会不会使他长期处于等待呢。
qinghero 2003-05-22
  • 打赏
  • 举报
回复
完全可以
下位机是否只接收到完整的数据才回映 :我用的下位机准确地说是一个安捷伦表和一些国产的电气参数测量仪表;它们的程序不是我写的;不过我认为肯定是收到完整的数据才回映吧,它们里面是由单片机管理的通讯程序,应该是不会长期等待的。
lvcjh 2003-05-21
  • 打赏
  • 举报
回复
如果一个串口连接多个下位机,每台都有限编号,回映时会不会冲突。
如果一个串口只连一台下位机就好办。现在我对这不是很清楚,能解释一下么。
qinghero 2003-05-21
  • 打赏
  • 举报
回复
我觉得不用发两次消息,在第一次发送的消息里处理就是了;
从下位机发送过来的信息肯定有一个发送头,如果你接收到发送头,就把存在缓存里的上一次的信息冲掉就行了,然后就直接在你这个消息映射函数里掉用子函数处理这个字符串就行了
qinghero 2003-05-21
  • 打赏
  • 举报
回复
你这种方法也是可行的。如果是国产的比较便宜,一般都不可以。呵呵,是不是有点片面?
lvcjh 2003-05-21
  • 打赏
  • 举报
回复
现在只有先发送,然后等待下位机的数据,完成后再对下一个下位机发数据。
所说的多线程是不是只不阻塞在哪个地方,发完就由读线程去读,如果完毕或超时则post消息给主线程。只有对多个串口时才会体现出优势。

另外收发可不可以同时进行,或怎么检测下位机是否可以进行双工。
qinghero 2003-05-21
  • 打赏
  • 举报
回复
一般情况下都是一个串口连接多个下位机的,你从上位机发送一个消息,就是相当于网络上的广播,只不过是广播的信息只对某一台下位机有用罢了。如果你的上位机对多台下位机发送信息时候没有间隔,下位机接收到后也会在这个网络上发送数据,因为所有的下位机的线都是接在一起的,所以当下位机同时发送数据时,就存在冲突的可能;有些下位机没有用到232接口所有的9根线,就没有"请求发送""允许发送"这样的机制。所有最好还是上机位检测多个下位机时,每检测一个要间隔一段时间。
lvcjh 2003-05-20
  • 打赏
  • 举报
回复
我现在找了一个类,现在可以发送字符串,发完后不等返回。
每接收一个字符就会发一个消息到本窗口,我想对返回的消息进行封装。
每接收一个完整的回映后,再发一个消息到别的窗口。并且加一个要发消息对列,没发的自动加在尾部,有空就可以发。如果下位机对某个消息没返回怎么办。会不会出现回映的冲突。
qinghero 2003-05-20
  • 打赏
  • 举报
回复
我也做过这方面的东西,我的方法是:两个线程,一个发送,一个接收;设一个定时器,时间到了就从发送线程发送数据。接收线程监听串口,当接收到一个字符之后,就向主窗口发送一个消息,对应的处理函数就进行处理,当然了,要互斥访问这个串口。

15,471

社区成员

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

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