如何读取其他程序向COM1口输出的数据?(300分)

  • 主题发起人 主题发起人 flysand
  • 开始时间 开始时间
你可先断开所有的COM的连接,然后试试能不能打开,如果还不能的话再查看本机是否
有程序已占用了COM口,如果没有的话就可能是COM口出了问题,两个COM口都要试
试,再换一台机试试,以前我写COM口程序的时候SPCOMM、MSCOMM、ASYN32都用过,从来没有出现过你说的问题,所以也要检查一下你的程序是不是重复初始化了两次COM口,另外连接时也要注意一下波特率、位长、奇偶校验都要匹配才能通讯的。
 
to acee:
先多谢您的回答!
如果关闭其它程序,我的程序是可以打开端口的。
现在就是发送数据的程序占用了COM口,(它要发送数据,当然要占用COM口)
我的程序要接收它发送的数据,因为[red]不能再打开该COM口[/red],所以不能接收数据!
 
如果是本机的程序占用了COM口,你当然不能再初始化了,所以你就换另一个COM口才行,至于和你相连的电脑它的程序是不能占用你的COM口的,它只能从该COM口发送或接收数据而已
 
你可能没有明白我所说的意思。
发送跟接收都同在一台电脑的两个不同程序,
我现在需要如何才能接收到数据。
 
你可以把Com1和Com2连起来,Com1的收接Com2的发,Com1的发接Com2的收,你去打开Com2读取数据不就可以了吗?
 
如果这样就要把两个COM口连接起来了,1--1,2--3,3--2还有两个引脚我记得不太清楚了,你查一下,每个程序初始化一个COM口就行了
 
其实既然同一台机之间的程序通信可以采用其它方式,如IPC,DDE之类,不一定非要用COM口的哦
 
发送程序是别人的,只知道它向com口送数据,所以不能用其他方法通信!
说来说去,还是得用电缆把两个端口连接![:(]
谁知道还有什么办法!
 
做用户级的驱动程序
 
如何做?不知道它是如何发送数据的!
 
另一程序已经占用了串口,你就不可能再去对该串口进行操作了!因此只能想变通的方法,要么用电缆把两个串口联起来,从另一串口接收数据;要么通过IPC,DDE之类的方式!
 
to flysand:
如果你的目的是得到数据,那么用HHD SerialMonitor这个软件就可以了。
如果你的目的是自己编程,那么需要对操作系统串口驱动程序进行监控。那么就可以得到USER MODE下的程序对串口的各种操作。
 
to nirv
>>目的是自己编程,那么需要对操作系统串口驱动程序进行监控。
>>那么就可以得到USER MODE下的程序对串口的各种操作。

不明白:USER MODE下的程序对串口的各种操作????
 
你的程序可以是内核模式(kernel mode)或者用户模式(user mode)。主要是Intel CPU的4个优先级ring0到ring3。用户模式是运行在ring3,对资源的控制要受到限制。而运行在ring0的程序可以控制所有的硬件,内核模式的驱动程序是运行在ring0的。所以你可以在监控到你想要的数据。我也是个初学者。多找两本书看看吧。
 
拦截API,CreateFile,WriteFile就可以了,不过这样做的缺点就是你的程序必须要先于需处理的程序之前运行
如果需要,留下Email,我做过这样的程序
 
用portmon可以得到正确的数据,你它要手工保存数据到文件。

我自己编程实现!

to pihome:
email:alonesand@163.com
to nirv
如何实现ring0的程序呢
 
邮件已发送,请查收
 
本机的一个程序向COM1口发送数据,用portmon可以得到该程序发出的数据,
大家还有什么办法?

to pihome
没有收到,请再发一次!
 
后退
顶部