伊莉討論區

標題: (已解決)C# serialport和TCP的連線問題 [打印本頁]

作者: 88753    時間: 2017-7-6 04:49 PM     標題: (已解決)C# serialport和TCP的連線問題

本帖最後由 88753 於 2017-7-9 07:29 PM 編輯

目前是使用serial port或是TCP去連接PLC(控制器)

但都有共同的問題
假設 連線後,將PLC(控制器)斷電,要如何得知現在有沒有跟設備連線?
serial port 有用過serialport.isopen(),但這個指令好像是指C#跟rs232/485可不可以連線
TCP的部分 就不知道要怎麼做

目前沒有頭緒,請大家給個方向,謝謝


作者: sam30525sam    時間: 2017-7-7 11:40 AM

本帖最後由 sam30525sam 於 2017-7-7 11:53 AM 編輯

我兩者都有做過,

一、SerialPort
建議你看看
https://msdn.microsoft.com/zh-tw/library/system.io.ports.serialport(v=vs.110).aspx

有個簡易的方法,就是你用try-catch-finnaly去包open(),
沒有錯誤就是連線到了。
IsOpen的屬性也可以,你沒開就是沒連到。

二、TCP
建議你看看
https://msdn.microsoft.com/zh-tw/library/system.net.sockets.tcpclient(v=vs.110).aspx
http://blog.darkthread.net/post-2011-08-11-detected-tcpclient-connection-status.aspx

看完應該就會了

======

補充一下,
因為你要做的是拔掉,收到通知,
這個我記得是無法的,
不管是SerialPort或TCP。

解法都只有一個,請設定一個定時器,定時去詢問是否活著


作者: 88753    時間: 2017-7-8 04:00 AM

sam30525sam 發表於 2017-7-7 11:40 AM
我兩者都有做過,

一、SerialPort

知道了   謝謝喔  回答得很詳細
   
那想請問 詢問的方式 是隨便傳一個命令到給設備嗎?  
(若傳的出去 代表有連到!?)

另外想問定時器有建議的時間嗎?  
(有什麼規定嗎 還是這個要看我自己的需求就可)
作者: sam30525sam    時間: 2017-7-8 10:59 PM

88753 發表於 2017-7-8 04:00 AM
知道了   謝謝喔  回答得很詳細
   
那想請問 詢問的方式 是隨便傳一個命令到給設備嗎?  

1. 詢問的方式,通常是問該設備現在的狀態(如果有的話)
2. timer的話,則是要看你要多及時,這個隨意,但盡量取得平衡點。
太快,會增加設備負擔,間接導致設備效率低下,
太慢,就設備掛掉時,到下一次送出前都會判定為正常狀態





歡迎光臨 伊莉討論區 (http://www09.eyny.com/) Powered by Discuz!