如何让两个程序同时读取串口的数据啊?

changyuming 2009-08-04 12:24:00
现在有一个delphi编写的程序正在运行,是别人写的,读取串口。为了扩展新功能,我打算编写一个程序,读取该串口的数据。
但是查了一下资料,串口似乎是独占方式打开的,那么我该怎么做呢?用什么语言不是很重要,重要的是要实现。
希望各位高手提供一个详细些的解决办法,谢谢了啊.
...全文
1353 21 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
有那么复杂吗?一个专门读取串口数据的程序,把读到的信息发送广播。其他需要的程序读取广播信息不就可以了?
zzutrain 2009-10-10
  • 打赏
  • 举报
回复
硬件上改改吧, 加一个二极管可以取收(发)的数据,加两个二极管都可以取到
贝隆 2009-10-03
  • 打赏
  • 举报
回复
个人办法:
1、程序1读取串口,将读取的内容存在数据库或文本文件中
2、程序2去读取数据库或文本文件。
ixinwang 2009-10-03
  • 打赏
  • 举报
回复
在软件逻辑上一般行不通,只有通过在物理接口上将其转换成485信号,然后分路,再回转成232信号,进行异步同口占用
changyuming 2009-08-15
  • 打赏
  • 举报
回复
可是原系统是不能被改变的啊,它还得从串口读取数据
Dolphin_001 2009-08-11
  • 打赏
  • 举报
回复
写一个程序专门负责读取。只是可以一边读取一边保存在某个文件中或内存映射中,为了达到同步的效果,要让目标的2个程序来访问文件或内存映射区就可以了。
WWX330 2009-08-10
  • 打赏
  • 举报
回复
一般是不行的,
除非一个程序用HOOK API技术
或者一个程序接收到数据后转发给另一个程序
或者建一个服务程序,两个程序都用服务程序读数据
rlbo 2009-08-10
  • 打赏
  • 举报
回复
可以使用串口监听的概念做。AccessPort这个串口监听的工具很好用,可惜如果要嵌入自己的程序,就要收费。
changyuming 2009-08-10
  • 打赏
  • 举报
回复
串口线看起来不难接,一共3根,但是我想了想最好还是用软件来实现,因为自己接的线,担心质量和性能问题,领导不会同意的,一旦出了问题,可就惨了,呵呵。我现在只能想想能不能做串口监听了,但这方面经验很少,希望大家帮帮忙啊,有什么资料希望提供一下。
JohnYale 2009-08-09
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 changyuming 的回复:]
串口监视需要占用很多系统资源么,如果这样的话,也不行啊,不能耽误原来那个程序的运行啊。
如果用一个一分二的串口转接的话,能行的通么?可以买到这样的线么?我打算这几天去市场看看。
原来的程序只是接收数据,现在我要写的程序也只是接受数据,都不需要发送数据
[/Quote]
1,串口监视不需要占用很多系统资源,不会耽误原来那个程序的运行
2,串口一分为二是可以的,不知道有没有现成的,有的话告诉大家一下。如果没有,自己焊一个也行,三块钱也用不了。买一个和原先相对的,两个和原先一样的,几根短线一连就ok了
xiaowei_001 2009-08-08
  • 打赏
  • 举报
回复
硬件同时是只能一个读,但你可以用其中一个读数据,在读的同时把数据传给另一个程序。这不就相当于两个同时读么!
ilshuai521 2009-08-07
  • 打赏
  • 举报
回复
如果真的有这功能那就太好了!
changyuming 2009-08-06
  • 打赏
  • 举报
回复
串口监视需要占用很多系统资源么,如果这样的话,也不行啊,不能耽误原来那个程序的运行啊。
如果用一个一分二的串口转接的话,能行的通么?可以买到这样的线么?我打算这几天去市场看看。
原来的程序只是接收数据,现在我要写的程序也只是接受数据,都不需要发送数据
lyguo 2009-08-05
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 aimin 的回复:]
1、安装虚拟串口程序
2、编一个程序,从硬件的串口上读数据,同时发往两个虚拟串口
3、原来的程序分别从两个虚拟串口上读数据

OK!
[/Quote]

要虚拟四个,两两成对。编一个程序,从硬件的串口上读数据,同时发往两个虚拟串口,原来的程序分别从另外两个相对应虚拟串口上读数据
hxy3100 2009-08-05
  • 打赏
  • 举报
回复
因为每次来了内容以后大家必须读出来判断一下才能知道是否自己需要的,而串口中的内容读出来后就只能由读程序保存,串口不再保存这部分内容了,所以串口没法共享。
lz可以安装一个虚拟串口程序,如Virtual Serial Port Driver 6.0等,利用其添加每对虚拟串口相当于连接在一起的功能,具体思路如下:
更改硬件串口名,硬件串口由新编写程序接管
添加一对虚拟串口,其中的一个串口名与硬件串口原来名称相同,分配给原来的delphi程序;另一个自己编程接管。
在新编写的程序中,打开硬件串口,读取其中数据,若为添加功能则自行处理,若为原来功能则发送到虚拟串口中,并从虚拟串口中读取数据后发送到硬件串口中去
de410 2009-08-04
  • 打赏
  • 举报
回复
不可能同时读取的~~
你可以把读出的数据存成文本格式,等一个程序读取玩了,另一个再读取此文本文件~~~
天剑68 2009-08-04
  • 打赏
  • 举报
回复
1、安装虚拟串口程序
2、编一个程序,从硬件的串口上读数据,同时发往两个虚拟串口
3、原来的程序分别从两个虚拟串口上读数据

OK!
diecode 2009-08-04
  • 打赏
  • 举报
回复
专门一个程序读
然后放到队列里
thankl 2009-08-04
  • 打赏
  • 举报
回复
关注
aaaaaaaaddd2 2009-08-04
  • 打赏
  • 举报
回复
路过
加载更多回复(1)

1,183

社区成员

发帖
与我相关
我的任务
社区描述
Delphi Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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