作者bbblue (植物进化中...)
看板C_Sharp
标题[问题] 多程式共用serial port
时间Mon Jul 26 21:56:48 2010
各位先进好,
不好意思,我又带奇怪的问题来请教大家了...
开发平台:vs 2008 C#
作业系统:winXP SP3
系统架构:client-server-equipment
问题:
我的系统架构具有2个程式,
分别是程式A(window Form)
与程式B(web service)
程式A常驻在server本机端监听COM1所收到的末端设备资讯;
程式B则由client端的使用者呼叫後,
将命令送至server,再同样透过COM1将命令送至设备端。
因此,在server端不安装serial port分享器的前提下,
是否有办法让两个程式共用COM1呢?
(p.s. COM1为实体port,非virtual com port)
个人想法:
如果2个需求都在同一程式的话,
是满好解决的,但在不同程式的状况下,
程式A又是常驻型监听程式,
也就是SerialPort物件完全不会close,
因此程式B永远没有机会open另一个SerialPort物件来进行传输...
那麽sniffer是如何办到...
在其他程式使用某com port的情况下同时监听呢?
我们有办法自己写程式做到吗?
目前唯一想到的解套方式,
就是当client呼叫web service时,
server端将收到的资料存进资料库,
程式A再定时quary资料库取得命令进行发送,
这样就可以在同一程式下对同一SerialPort进行存取,
但如此一来client端命令就无法即时执行...
目前还没想到比较适当的解套办法,
还请有经验的先进提携指点一下可能的方向了,
谢谢大家!
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.132.23.123
1F:推 liaommx:如果这样呢?用一个假的程式开启COM1, 07/26 22:44
2F:→ liaommx:其他的程式都透过这个程式去监听+写入. 07/26 22:44
3F:→ liaommx:这样会不会好一点? 07/26 22:44
4F:→ liaommx:有种man in the middle的感觉(资安的中间人脚色) 07/26 22:45
5F:→ liaommx:当然,真正的sniffer不是这样写...@@".. 07/26 22:46
6F:→ bbblue:L大的意思是写一个class来呼叫吗?@@ 07/26 22:55
7F:→ bbblue:如果不是的话,跨程式的存取(呼叫)该如何实现呢?@@ 07/26 22:56
8F:→ pico2k:com port不能共用,程式A/B可以用Socket沟通 07/27 10:30
9F:推 leicheong:com port如果只是要监听的话, 这是有可能的. 07/27 20:29
10F:→ leicheong:且看sysinternals site中portmon.exe, 只要监测的程式 07/27 20:30
11F:→ leicheong:先行就可以了. 07/27 20:30
12F:→ leicheong:不过那功能需要写kernel mode driver, C#应该不行吧... 07/27 20:32
13F:推 liaommx:我的意思是只有A程式能开启port,其他程式都透过A去做事情 07/27 20:55
14F:→ liaommx:包含监听,由A传给其他程式听到的资料,这样 07/27 20:56
15F:推 leicheong:不是说B也要经COM1回传吗? 这样的话只有让A以 07/27 22:42
16F:→ leicheong:event filter偷看COM1的event, B程式在收到A的指示後 07/27 22:44
17F:→ leicheong:直接经COM1写入回传的方式吧... 07/27 22:44