作者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