Beispiel #1
0
        void Analysis_data(ref UCHR[] fxfdz, ref UCHR h, ref UCHR m, ref UCHR[] buffer, ref UINT package_length)
        {
            UINT crc = 0, crc1 = 0;
            UINT length, length1;

            if (buffer[package_length - 1] != 0x16)
            {
                return;
            }
            else if (buffer[0] == 0x11)
            {
                length1 = length = ((UINT)buffer[1] << 8) + (UINT)buffer[2];
                crc     = Convert.ToUInt32(((((UINT)buffer[length + 1]) << 8) & 0xff00) + (buffer[length + 2] & 0x00ff));
                if (length1 < package_length)
                {
                    for (; length1 > 0; length1--)
                    {
                        crc1 += buffer[length1];
                    }
                    if (crc == crc1)
                    {
                        UINT   _LENGTH = length - 2;
                        UCHR[] exdata  = new UCHR[_LENGTH];
                        System.Buffer.BlockCopy(buffer, 3, exdata, 0, Convert.ToInt32(_LENGTH));
                        DATA_Handler(ref fxfdz, ref h, ref m, ref exdata, ref _LENGTH);
                    }
                }
            }
        }
Beispiel #2
0
        void TXSQ_send(UCHR[] buffer, UINT len, UCHR[] dis)
        {
            UINT lenth = BD_TXSQ.lenth + len, i = 0;;

            // UCHR[] sendbuffer = Encoding.Default.GetBytes("$TXSQ0?00000?");//最多只能发送210字节,这张卡是628bit
            UCHR[] sendbuffer = new UCHR[lenth];
            sendbuffer[0]  = (byte)'$';
            sendbuffer[1]  = (byte)'T';
            sendbuffer[2]  = (byte)'X';
            sendbuffer[3]  = (byte)'S';
            sendbuffer[4]  = (byte)'Q';
            sendbuffer[5]  = Convert.ToByte(lenth >> 8);
            sendbuffer[6]  = Convert.ToByte(lenth & 0xff);
            sendbuffer[7]  = icxx.yhdz[0];
            sendbuffer[8]  = icxx.yhdz[1];
            sendbuffer[9]  = icxx.yhdz[2];
            sendbuffer[10] = 0B01000110;
            sendbuffer[11] = dis[0];
            sendbuffer[12] = dis[1];
            sendbuffer[13] = dis[2];
            sendbuffer[14] = Convert.ToByte((len * 8) >> 8);
            sendbuffer[15] = Convert.ToByte((len * 8) & 0xff);
            sendbuffer[16] = 0;
            for (; i < len; ++i)
            {
                sendbuffer[17 + i] = buffer[i];
            }
            sendbuffer[lenth - 1] = Xor_checksum(ref sendbuffer, lenth - 1);
            mycom.Send(sendbuffer);
        }
Beispiel #3
0
        /*
         * 对于有符号参数,第 1 位符号位统一规定为“0”表示“+”,
         * “1”表示“-”,其后位数为参数值,用原码表示。
         */
        public int UCHRtoINT(UCHR a, UCHR b)
        {
            int result = 0, flag = 0;

            if ((a & 0x80) != 0)
            {
                flag = -1;
            }
            else
            {
                flag = 1;
            }
            for (int i = 0; i < 7; ++i)
            {
                if ((a & (1 << i)) != 0)
                {
                    result |= (1 << (i + 8));
                }
            }
            for (int i = 0; i < 8; ++i)
            {
                if ((b & (1 << i)) != 0)
                {
                    result |= (1 << i);
                }
            }
            return(result * flag);
        }
Beispiel #4
0
 void Handle_FXXX()
 {
     if (fkxx.flbz == 4)//发射频度未到
     {
         SEND_BLOCKTIME = fkxx.fjxx[3];
     }
     if (fkxx.flbz == 0)
     {
         SEND_BLOCKTIME = 60;
     }
 }
Beispiel #5
0
        /*
         * 发送用
         * 异或校验和算法
         */
        UCHR Xor_checksum(ref UCHR[] buf, UINT len)
        {
            UINT i;
            UCHR checksum = 0;

            for (i = 0; i < len; ++i)
            {
                checksum ^= buf[i];
            }

            return(checksum);
        }
Beispiel #6
0
 public void BD_send(ref UCHR[] buffer, UINT len, UCHR[] dis)
 {
     if (len > 0)//BSGL != 0 && error_flag == 0 &&SEND_BLOCKTIME == 0 &&
     {
         UCHR[] send_buffer;
         send_buffer = new UCHR[len + DATA_FIRM_LENTH];
         TXSQ_send(Data_encapsulation(send_buffer, ref buffer, ref len), len + DATA_FIRM_LENTH, dis);
     }
     else
     {
     }
 }
Beispiel #7
0
        /*
         * 接收用
         * 异或校验和算法
         */
        UCHR Xor_checksum(ref UCHR[] buf, UINT location, UINT len)
        {
            UINT i, ii;
            UCHR checksum = 0;

            for (i = 0; i < len; ++i)
            {
                ii        = (location + i) & RE_BUFFER_SIZE;
                checksum ^= buf[ii];
            }

            return(checksum);
        }
Beispiel #8
0
 void XTZJ_send()
 {
     UCHR[] sendbuffer = new UCHR[13];
     // UCHR []sendbuffer= Encoding.Default.GetBytes("$XTZJ0?00000?");
     sendbuffer[0]  = (byte)'$';
     sendbuffer[1]  = (byte)'X';
     sendbuffer[2]  = (byte)'T';
     sendbuffer[3]  = (byte)'Z';
     sendbuffer[4]  = (byte)'J';
     sendbuffer[5]  = 0;
     sendbuffer[6]  = Convert.ToByte(BD_XTZJ.lenth);
     sendbuffer[7]  = icxx.yhdz[0];
     sendbuffer[8]  = icxx.yhdz[1];
     sendbuffer[9]  = icxx.yhdz[2];
     sendbuffer[10] = Convert.ToByte((UINT)BD_PRINT_TIME_SEQ >> 8);
     sendbuffer[11] = Convert.ToByte((UINT)BD_PRINT_TIME_SEQ & 0xff);
     sendbuffer[12] = Xor_checksum(ref sendbuffer, 12);
     mycom.Send(sendbuffer);
 }
Beispiel #9
0
 void Handle_ZJXX()
 {
     if ((zjxx.iczt != 0) || (zjxx.yjzt != 0) || (zjxx.rzzt != 0x02))
     {
         error_flag = 1;
     }
     else
     {
         error_flag = 0;
     }
     for (int i = 0; i < 6; ++i)
     {
         if (zjxx.bsgl[i] != 0)
         {
             BSGL |= Convert.ToByte((1 << i) & 0xff);
         }
         else
         {
             BSGL &= Convert.ToByte((~(1 << i)) & 0xff);
         }
     }
 }
Beispiel #10
0
 private void Button_Click(object sender, RoutedEventArgs e)
 {
     try
     {
         if (e.Source is Button)
         {
             if (!isfirstrun)
             {
                 int id = Convert.ToInt32(cbb_id.SelectedItem);
                 //MessageBox.Show(cbb_zlgn.Text);
                 if (cbb_zlgn.Text.Equals("重启"))
                 {
                     byte[] aaa = new byte[1];
                     UCHR[] _id = new UCHR[3];
                     _id[0] = Convert.ToByte((id >> 16) & 0xff);
                     _id[1] = Convert.ToByte((id >> 8) & 0xff);
                     _id[2] = Convert.ToByte(id & 0xff);
                     aaa[0] = 1;
                     bdxx.BD_send(ref aaa, (UINT)(1), _id);
                 }
                 if (cbb_zlgn.Text.Equals("蜂鸣一秒"))
                 {
                     byte[] aaa = new byte[1];
                     UCHR[] _id = new UCHR[3];
                     _id[0] = Convert.ToByte((id >> 16) & 0xff);
                     _id[1] = Convert.ToByte((id >> 8) & 0xff);
                     _id[2] = Convert.ToByte(id & 0xff);
                     aaa[0] = 2;
                     bdxx.BD_send(ref aaa, (UINT)(1), _id);
                 }
             }
         }
     }
     catch (Exception ex)
     {
         WriteLog.WriteError(ex);
     }
 }
Beispiel #11
0
        void DATA_Handler(ref UCHR[] fxfdz, ref UCHR h, ref UCHR m, ref UCHR[] data, ref UINT lenth)
        {
            //TODO
            int ex_i = 0;

            if (data[0] == 1)
            {
                ex_i = 4;
            }


            int   id   = (fxfdz[0] << 16) | (fxfdz[1] << 8) | fxfdz[2];
            float temp = (float)(data[ex_i + 1] / 1.0);

            if (data[ex_i + 2] < 10)
            {
                temp += (float)(data[ex_i + 2] / 10.0);
            }
            else
            {
                temp += (float)(data[ex_i + 2] / 100.0);
            }
            float humi = (float)(data[ex_i + 3] / 1.0);

            if (data[ex_i + 4] < 10)
            {
                humi += (float)(data[ex_i + 4] / 10.0);
            }
            else
            {
                humi += (float)(data[ex_i + 4] / 100.0);
            }
            float mq135 = (float)(((Convert.ToUInt16(data[ex_i + 5]) << 8) | data[ex_i + 6]) / 10000.0);
            char  jdfw  = (data[ex_i + 11] & 0x80) == 1 ? 'W' : 'E';
            char  wdfw  = (data[ex_i + 8] & 0x80) == 1 ? 'S' : 'N';

            data[ex_i + 11] &= 0x7F;
            data[ex_i + 8]  &= 0x7F;
            DateTime time = new DateTime(Convert.ToInt32(gntx.year), gntx.month, gntx.day, gntx.hour, gntx.minute, gntx.second);

            if (!MyDataBase.CheckBDID_exist(id))//检查ID存不存在,存在则更新
            {
                if (data[0] == 1)
                {
                    MyDataBase.Insertidcard(id, time, data[1], data[2], data[3], data[4]);
                }
                else
                {
                    MyDataBase.Insertidcard(id, time);
                }
                if (!MyDataBase.IsTableExist("UserID_" + Convert.ToString(id) + "_Data"))//检查数据表存不存在,不存在则创建
                {
                    if (!MyDataBase.New_tb_for_id_data(id))
                    {
                        MessageBox.Show("", "建表失败", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    }
                }
                if (!MyDataBase.CheckAlarm_isexist(id))//检查Alarm表ID存不存在
                {
                    MyDataBase.Insertid_ToAlarm(id);
                }
            }
            else
            {
                if (data[0] == 1)
                {
                    MyDataBase.Updateidcard(id, time, data[1], data[2], data[3], data[4]);
                }
                else
                {
                    MyDataBase.Updateidcard(id, time);
                }
            }

            if (BaiduAPI.Geocoding_API(Convert.ToString((data[ex_i + 9] / 60.0 + data[ex_i + 8]) / 60.0 + data[ex_i + 7]),
                                       Convert.ToString((data[ex_i + 12] / 60.0 + data[ex_i + 11]) / 60.0 + data[ex_i + 10]), ref temp_addr) == true)
            {
                if (!MyDataBase.InsertData(id, temp, humi, mq135, data[ex_i + 7], data[ex_i + 8], data[ex_i + 9], data[ex_i + 10], data[ex_i + 11], data[ex_i + 12], wdfw, jdfw, time, temp_addr))
                {
                    MessageBox.Show("", "插入失败", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
            else
            {
                if (!MyDataBase.InsertData(id, temp, humi, mq135, data[ex_i + 7], data[ex_i + 8], data[ex_i + 9], data[ex_i + 10], data[ex_i + 11], data[ex_i + 12], wdfw, jdfw, time, ""))
                {
                    MessageBox.Show("", "插入失败", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
        }
Beispiel #12
0
 public UINT UCHRtoUINT(UCHR a, UCHR b)
 {
     return((UINT)a * 256 + (UINT)b);
 }
Beispiel #13
0
        //void Thread_Extract(object source, System.Timers.ElapsedEventArgs e)
        //{
        //    Receive_Protocol();
        //}
        //void Thread_Check(object source, System.Timers.ElapsedEventArgs e)
        //{
        //    Check_status();
        //    if (SEND_BLOCKTIME != 0)
        //    {
        //        --SEND_BLOCKTIME;
        //        print_flag |= PRINT_BLOCK;
        //    }
        //}

        public void Check_status()
        {
            //UINT check_status_count = 0;
            if (check_status_count >= 10)
            {
                check_status_count = 0;
                MessageBox.Show("check_status_count=" + check_status_count, "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
                status &= 0;
                status |= STATUS_BIT_ANSWER;
            }

            if ((status & STATUS_BIT_ANSWER) != 0)//有回复
            {
                check_status_count = 0;
                switch (status & ~STATUS_BIT_ANSWER)//检查确认位
                {
                case (STEP_NONE | STATUS_BIT_NO_CONFIRM):
                    status = (byte)((STEP_NONE + 1) | STATUS_BIT_ANSWER);    //初始化
                    break;

                case (STEP_ICJC | STATUS_BIT_CONFIRM):
                    status = (byte)((STEP_ICJC + 1) | STATUS_BIT_ANSWER);
                    break;

                case (STEP_ICJC | STATUS_BIT_NO_CONFIRM):
                    status = (byte)((STEP_NONE + 1) | STATUS_BIT_ANSWER);
                    break;

                case (STEP_GNPS | STATUS_BIT_CONFIRM):
                    status = (byte)((STEP_GNPS + 1) | STATUS_BIT_ANSWER);
                    break;

                case (STEP_GNPS | STATUS_BIT_NO_CONFIRM):
                    status = (byte)((STEP_NONE + 1) | STATUS_BIT_ANSWER);
                    break;

                case (STEP_GNVS | STATUS_BIT_CONFIRM):
                    status = (byte)((STEP_GNVS + 1) | STATUS_BIT_ANSWER);
                    break;

                case (STEP_GNVS | STATUS_BIT_NO_CONFIRM):
                    status = (byte)((STEP_NONE + 1) | STATUS_BIT_ANSWER);
                    break;

                case (STEP_GNTS | STATUS_BIT_CONFIRM):
                    status = (byte)((STEP_GNTS + 1) | STATUS_BIT_ANSWER);
                    break;

                case (STEP_GNTS | STATUS_BIT_NO_CONFIRM):
                    status = (byte)((STEP_NONE + 1) | STATUS_BIT_ANSWER);
                    break;

                case (STEP_XJZJ | STATUS_BIT_CONFIRM):
                    status = (byte)((STEP_XJZJ + 1) | STATUS_BIT_ANSWER);
                    break;

                case (STEP_XJZJ | STATUS_BIT_NO_CONFIRM):
                    status = (byte)((STEP_NONE + 1) | STATUS_BIT_ANSWER);
                    break;

                case (STEP_SJSC | STATUS_BIT_CONFIRM):
                    status = (byte)((STEP_SJSC + 1) | STATUS_BIT_ANSWER);    //就绪
                    break;

                case (STEP_SJSC | STATUS_BIT_NO_CONFIRM):
                    status = (byte)((STEP_NONE + 1) | STATUS_BIT_ANSWER);
                    break;

                default:
                    //byte[] aaa = new byte[255];
                    //byte[] id = { 0x04, 0x7c, 0x66 };
                    //for (int i = 0; i < 10; ++i)
                    //{
                    //    aaa[i] = (byte)(i + 0x30);
                    //}
                    //this.BD_send(ref aaa, (UINT)(10), id);
                    break;
                }
            }
            if ((status & (STATUS_BIT_STEP | STATUS_BIT_ANSWER)) == (STEP_ICJC | STATUS_BIT_ANSWER))
            {
                status     &= (byte)~(STATUS_BIT_ANSWER | STATUS_BIT_CONFIRM);
                print_flag |= PRINT_STATUS;
                ICJC_send();
            }
            else if ((status & (STATUS_BIT_STEP | STATUS_BIT_ANSWER)) == (STEP_XJZJ | STATUS_BIT_ANSWER))
            {
                status &= (byte)~(STATUS_BIT_ANSWER | STATUS_BIT_CONFIRM);
                XTZJ_send();
                print_flag |= PRINT_STATUS;
            }
            else if ((status & (STATUS_BIT_STEP | STATUS_BIT_ANSWER)) == (STEP_SJSC | STATUS_BIT_ANSWER))
            {
                status &= (byte)~(STATUS_BIT_ANSWER | STATUS_BIT_CONFIRM);
                SJSC_send();
                print_flag |= PRINT_STATUS;
            }
            else if ((status & (STATUS_BIT_STEP | STATUS_BIT_ANSWER)) == (STEP_GNPS | STATUS_BIT_ANSWER))
            {
                status &= (byte)~(STATUS_BIT_ANSWER | STATUS_BIT_CONFIRM);
                GNPS_send();
                print_flag |= PRINT_STATUS;
            }
            else if ((status & (STATUS_BIT_STEP | STATUS_BIT_ANSWER)) == (STEP_GNVS | STATUS_BIT_ANSWER))
            {
                status &= (byte)~(STATUS_BIT_ANSWER | STATUS_BIT_CONFIRM);
                GNVS_send();
                print_flag |= PRINT_STATUS;
            }
            else if ((status & (STATUS_BIT_STEP | STATUS_BIT_ANSWER)) == (STEP_GNTS | STATUS_BIT_ANSWER))
            {
                status &= (byte)~(STATUS_BIT_ANSWER | STATUS_BIT_CONFIRM);
                GNTS_send();
                print_flag |= PRINT_STATUS;
            }
            else if ((status & (STATUS_BIT_STEP | STATUS_BIT_ANSWER)) == (STEP_READY | STATUS_BIT_ANSWER))
            {
                print_flag |= PRINT_STATUS;
            }
            else
            {
                ++check_status_count;
            }
        }