發表文章

目前顯示的是 6月, 2019的文章

C# M2MQTT 斷線重連@Sunny的工程師日記

最近因為專案的需求,需要做出一個連續24小時365天運作的監看系統,為了確保通訊能夠不中斷就必須做到MQTT斷線重連,避免訊息漏接。 需求: 建立MQTT連線。 MQTT發送訊息。 MQTT接收訊息。 建置方式: 引用M2MQTT Library。 建立MQTT連線。 建立MQTT發送訊息Function。 建立MQTT接收訊息Function。 建立MQTT斷線Function。 以下是我的程式碼,請自行參考。 using uPLibrary.Networking.M2Mqtt; using uPLibrary.Networking.M2Mqtt.Exceptions; using uPLibrary.Networking.M2Mqtt.Messages; public static MqttClient client;//MqttClient string ls_Ip = "127.0.0.1";//Broker IP static void ConnectionClosed(object sender, EventArgs e) { //MQTT斷線的事件,將中斷連線時需要做的事情放在這邊 } public void Client_MqttMsgPublishReceived(object sender, MqttMsgPublishEventArgs e) { //MQTT接收的事件 } static void MqttMsgSubscribed(object sender, MqttMsgSubscribedEventArgs e) { //MQTT訂閱的事件 } public void mqttconnect() { try { client = new MqttClient(ls_Ip);//MQTTServer在本機 client.MqttMsgPublishReceived += Client_MqttMsgPublishReceived;//當接收到訊息時會啟動 client.MqttMsgSubscribed += MqttMsgSubscribed;//當Topic訂閱成功時會

Prism測試

//限制輸入的內容必須為數字 private void tb_KeyPress_limite_KeyPress(object sender, KeyPressEventArgs e) { //限定輸入的內容僅能有一個小數點 if (e.KeyChar == '.') { foreach (char i in (sender as TextBox).Text)//判定textBox1是否有小數點 { if (i == '.') e.Handled = true;//有 } return; } // e.KeyChar == (Char)48 ~ 57 -----> 0~9 // e.KeyChar == (Char)8 -----------> Backpace // e.KeyChar == (Char)13-----------> Enter if (e.KeyChar == (Char)48 || e.KeyChar == (Char)49 || e.KeyChar == (Char)50 || e.KeyChar == (Char)51 || e.KeyChar == (Char)52 || e.KeyChar == (Char)53 || e.KeyChar == (Char)54 || e.KeyChar == (Char)55 || e.KeyChar == (Char)56 || e.KeyChar == (Char)57 || e.KeyChar == (Char)13 || e.KeyChar == (Char)8) { e.Handled = false; } else { e.Handled = true; } } ls cd /home/moxa/config

C# Textbox 輸入限制數字及一個小數點@Sunny的工程師日記

在開發程式的時候,常常會有某些情況是限制輸入的內容,例如我現在要一組浮點數的內容,但是操作者往往不會依照著程式設計師的想法走,或許他會多加一個小數點,或許會加入奇怪的標點符號,這就會照成程式的轉換型別時出現問題,所以要避免這種狀況,就必須要讓使用者輸入內容時作出限制。 範例: 輸入一個小數點。 數字範圍0~9。 不能夠出現奇怪的標點符號 解決方式: 要如何判斷0~9的數字區間呢?最快的做法就是判斷使用者所輸入的鍵盤對應的數字是否落在0~9之間,到這邊還不要太開心,因為電腦判斷0~9的阿拉伯數字是必須經過換算才會得到這個結果,所以這邊必須去對照ASCII Code。阿拉伯數字0~9分別對應ASCII Code DEC 48~57。 此時Textbox就可以有效的判斷輸入的內容是否為阿拉伯數字0~9區間,但為了輸入方便,必須將Enter 及delete按鍵也加入到判斷,這樣子輸入上會變得非常方便。 以下是程式碼的,可以自行參考。 //限制輸入的內容必須為數字 private void tb_KeyPress_limite_KeyPress(object sender, KeyPressEventArgs e) { //限定輸入的內容僅能有一個小數點 if (e.KeyChar == '.') { foreach (char i in (sender as TextBox).Text)//判定textBox1是否有小數點 { if (i == '.') e.Handled = true;//有 } return; } // e.KeyChar == (Char)48 ~ 57 -----> 0~9 // e.KeyChar == (Char)8 -----------> Backpace // e.KeyChar == (Char)13-----------> Enter if (e.KeyChar == (Char)48 || e.KeyChar == (Char