Пример #1
0
 //private bool inDataTicks = false;
 private void tmrData_Tick(object sender, EventArgs e)
 {
     //if (inDtuTicks || inDataTicks) return;
     //inDataTicks = true;
     try
     {
         //读取数据
         DTUDataStruct dat = new DTUDataStruct();
         while (this.DTUService.GetNextData(out dat))
         {
             LogRecive(dat);
             Application.DoEvents();
             if (!DTUService.Started)
             {
                 return;
             }
             //自动回应
             if (dat.m_data_type == 1 && this.chkSet_AutoReply.Checked)
             {
                 if (!this.DTUService.SendHex(dat.m_modemId, dat.m_data_buf, dat.m_data_len))
                 {
                     LogWarning("自动回应数据", DTUService.LastError);
                 }
             }
         }
     }
     catch (Exception ee)
     {
         LogWarning("读取数据", ee.Message);
     }
     finally
     {
         //inDataTicks = false;
     }
 }
Пример #2
0
        private void LogRecive(DTUDataStruct dat)
        {
            if (dat.m_data_type == 2)
            {
                string text = System.Text.Encoding.Default.GetString(dat.m_data_buf, 0, dat.m_data_len);
                this.Log("从用户 " + dat.m_modemId.ToString("X").PadLeft(8, '0') + " 接收控制命令回应", "(TextLen=" + text.Length.ToString() + ")\r\n" + text, Color.LightSeaGreen);
            }
            else if (this.cboSet_RcvType.SelectedIndex == 0)
            {
                string text = System.Text.Encoding.Default.GetString(dat.m_data_buf, 0, dat.m_data_len);
                this.Log("从用户 " + dat.m_modemId.ToString("X").PadLeft(8, '0') + " 接收文本", "(TextLen=" + text.Length.ToString() + ")\r\n" + text, Color.LightSeaGreen);
            }
            else
            {
                this.Log("从用户 " + dat.m_modemId.ToString("X").PadLeft(8, '0') + " 接收字节", "(HexCount=" + dat.m_data_len.ToString() + ")\r\n" + Util.ByteArrayToHexString(dat.m_data_buf, 0, dat.m_data_len), Color.LightSeaGreen);
            }

            if (dat.m_data_len > 0)
            {
                Byte[] Buffer = new byte[dat.m_data_len];
                Array.Copy(dat.m_data_buf, 0, Buffer, 0, dat.m_data_len);
                _Client_OnReceived(Buffer);
            }
        }
Пример #3
0
 //public static extern bool DLLGetNextData(ref DTUDataStruct pDataStruct, ushort waitseconds);
 private static extern bool DLLGetNextData(ref DTUDataStruct pDataStruct, ushort waitseconds);
Пример #4
0
 public bool GetNextData(out DTUDataStruct dat)
 {
     dat = new DTUDataStruct();
     return(DLLGetNextData(ref dat, 0));
 }