public int setMessage(string a) { msg.Add(a); if (eventThread != null) { if (eventThread.IsAlive == true) { return(-1); } } TaiSEIA_Packet_structure rcv_code = new TaiSEIA_Packet_structure(msg[0]); //Send Actions if (rcv_code.isEqualFunctionID(0x0100)) { //Receive broadcast from HNA. Then start set ID process eventThread = new Thread(new ThreadStart(eventThread_SetIDProcess)); eventThread.IsBackground = true; eventThread.Start(); } msg.RemoveAt(0);//Client processed the msg, so clean it return(0); }
private void eventThread_SetIDProcess() { send_code = new TaiSEIA_Packet_structure(); send_code.setFunctionID(0xF0FF); send2Client(send_code.ToString()); //Send ACK string tmp_usrid = "0xA01"; string tmp_hgid = "1"; string tmp_hna_id = "2"; send_code = new TaiSEIA_Packet_structure(); send_code.setFunctionID(0x0102, new string[3] { Convert.ToInt64(tmp_usrid, 16).ToString(), tmp_hgid, tmp_hna_id }); send2Client(send_code.ToString()); while (msg.Count == 0) { } //Wait for HNA's ACK msg TaiSEIA_Packet_structure rcv_code = new TaiSEIA_Packet_structure(msg[0]); if (rcv_code.isEqualFunctionID(0xF0FF))//Receive ACK { msg.RemoveAt(0); } else { //do something } while (msg.Count == 0) { } //Wait for HNA's msg rcv_code = new TaiSEIA_Packet_structure(msg[0]); if (rcv_code.isEqualFunctionID(0xF100))//Receive Set Success!! { msg.RemoveAt(0); send_code = new TaiSEIA_Packet_structure(); send_code.setFunctionID(0xF0FF); send2Client(send_code.ToString()); //Send ACK } else { //do something } msg.Clear(); eventThread.Abort(); }