C# TCP充電樁參數設定工具編寫總結

來源:互聯網
上載者:User

標籤:

1.等待用戶端串連的時候,catch{}內不要編寫異常處理,否則報錯;
2.線上程中對別的控制項進行操作,要使用委託,否則引起衝突;(或者new thread)

//將串連上的用戶端顯示在List中,跨線程委託處理        delegate void SetListBoxCallback(string str);        public void SetListBox(string str)        {            if (listBoxClient.InvokeRequired)            {                SetListBoxCallback setListCallback = new SetListBoxCallback(SetListBox);                listBoxClient.Invoke(setListCallback, str);            }            else            {                listBoxClient.Items.Add(str);            }        }

 


3.關於協助,使用平台內建的HelpProvider不行(未解決問題),可以使用keydown()事件。
 

   if(e.KeyCode==Keys.F1)            {           System.Diagnostics.Process.Start("iexplore.exe", strPath);            }

 


4.CRC16校正,modbus中低位在前,高位在後

public byte[] CRC16_C(byte[] data)
        {
            byte CRC16Lo;
            byte CRC16Hi;   //CRC寄存器
            byte CL; byte CH;       //多項式碼&HA001
            byte SaveHi; byte SaveLo;
            byte[] tmpData;
            int I;
            int Flag;
            CRC16Lo = 0xFF;
            CRC16Hi = 0xFF;
            CL = 0x01;
            CH = 0xA0;
            tmpData = data;
            for (int i = 0; i < tmpData.Length; i++)
            {
                CRC16Lo = (byte)(CRC16Lo ^ tmpData[i]); //每一個資料與CRC寄存器進行異或
                for (Flag = 0; Flag <= 7; Flag++)
                {
                    SaveHi = CRC16Hi;
                    SaveLo = CRC16Lo;
                    CRC16Hi = (byte)(CRC16Hi >> 1);      //高位右移一位
                    CRC16Lo = (byte)(CRC16Lo >> 1);      //低位右移一位
                    if ((SaveHi & 0x01) == 0x01) //如果高位位元組最後一位為1
                    {
                        CRC16Lo = (byte)(CRC16Lo | 0x80);   //則低位位元組右移後前面補1
                    }             //否則自動補0
                    if ((SaveLo & 0x01) == 0x01) //如果LSB為1,則與多項式碼進行異或
                    {
                        CRC16Hi = (byte)(CRC16Hi ^ CH);
                        CRC16Lo = (byte)(CRC16Lo ^ CL);
                    }
                }
            }
            byte[] ReturnData = new byte[2];
            ReturnData[0] = CRC16Lo;       //CRC低位
            ReturnData[1] = CRC16Hi;       //CRC高位
            return ReturnData;
        }

   
5.TCP發送報文到下位機時,發送的是十六進位位元組數組,需要在發送的時候將字串轉化為十六進位位元組資料。
6.由於涉及多用戶端的串連,使用定時器迴圈掃描是否有串連接入。
7.驗證是否為數字,是否為浮點數時,使用正則式驗證。
                  

             string regexftext = @"^(-?\d+)(\.\d+)?$";
                    Regex regexfloat = new Regex(regexftext, RegexOptions.None);
                    regexfloat.IsMatch(StrAvePrice.Trim();

 

C# TCP充電樁參數設定工具編寫總結

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.