串口通讯的基础问题,请各位伸出援助之手。

zengyh 2002-12-10 03:24:43
我想写个串口通讯程序,该程序相当于TCP/IP的后台守护,等待客户通过MODEM发出交易请求,并处理返回。

我想问的是,如果我用MScomm控件的话,程序最好放在哪里执行?是否在主窗体放上该控件,配置在窗体初始化时完成?那在哪里处理交易?它怎么知道有新的连接请求进来?

如果我不采用控件而自己写的话,比如写一个对串口包括配置,读写的类,那么该类变量一般在哪里定义?而交易处理在哪里实现?还有,对于它如何判断新连接,我更是迷茫,总不会把所有的处理都放在主窗体的构造函数里吧,先配置,然后循环处理交易。因为我上次听有位老兄说通过串口不可能实现并发的,但这样又有一个问题,该构造函数会一直运行,窗体何时才能建立,而某次交易如果出现故障,连错误处理都不好。

各位,我对于串口编程真可以说是弱智型,请大家帮帮忙,说点经验吧,说说自己编写的步骤,网上的这方面的资料我也看了不少,可还是不知道如何找个突破口。

我就那么点分了,希望大家帮帮忙。说点心得,一点都好。
...全文
59 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
warton 2002-12-16
  • 打赏
  • 举报
回复
关注
zzywuwu 2002-12-16
  • 打赏
  • 举报
回复
说明一下: 首先我不知道你用什么方法编写这个串口程序,1 如果是控件编写,根本不需要建立线程, 2 如果是用win api 的话,当然要建立!
更正一下:串口和网络没有是联系,所以你说的tcp/ip,我只有???串口程序只需要从串口读和写,和外部是没有联系的,其实2000自带的超级终端,就是一个串口程序,你可以看看他是如何工作的!置于什么时候读串口,写串口,这些都是看你需要怎么编写,自己去控制读写!SetCommMask(),可以设定事件,WaitCommEvent(),可以用来等待事件。

zengyh 2002-12-11
  • 打赏
  • 举报
回复
我模仿下载的一段程序来实现,主窗体创建的时候,建了个新的线程,然后在线程里处理交易,下载的程序是主线程和新建立的线程有数据交换,主线程写,子线程读。现在又有一个问题,子线程Execute()可检测是否有新的连接进来(不知道新的连接请求和新的数据发送有何区别,TCP/IP连接请求为OnAccept,而数据请求为OnRead),如果我的交易不能确定数据发送接收的次数,(就是说有可能发三次、收三次,也可能各五次,不能确定),那么我如何知道这个新收到的数据是上一次交易未结束,还是上次交易结束后新一次交易的请求?是否只能我在程序里控制。串口通讯时是否有协议该次连接开始或结束?
yuyulily 2002-12-11
  • 打赏
  • 举报
回复
它怎么知道有新的连接请求进来?
MScomm控件的话串口打开后,用ONComm事件
yuyulily 2002-12-11
  • 打赏
  • 举报
回复
可以用INI文件来配置串口信息。
zzywuwu 2002-12-10
  • 打赏
  • 举报
回复
用控件的话,要知道是否串口有数据进来,我记得控件有个属性是SThreshold,可以设定事件情况,如果要自己写一个类,还是比较麻烦,不过网上有现成的,http://www.gjwtech.com/serialcomm.htm,这个地方可以帮助你,我建议你还是用Window api 函数编写,用控件串口的放送和接收是万能变量,我以前遇到过这个问题,但是我没有解决它,后来只好用api,给你个建议,作串口用cb写,不是很好,用vc好一些!
zengyh 2002-12-10
  • 打赏
  • 举报
回复
大家随便提提都行,其实应当不是很难,我就是从未接触过,一点经验都没有,所以犯迷糊。

哪位指点一下说不定就明白了。
HUANG_JH 2002-12-10
  • 打赏
  • 举报
回复
比较难!
up

1,317

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder 网络及通讯开发
社区管理员
  • 网络及通讯开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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