//============== ГЛАВНЫЙ ЦИКЛ ПОТОКА CAN void main() { pFORM = data.adres_FORM1;//берем адрес формы if (data.adres_FORM1 == null) { Thread.Sleep(100); return; } //значит поток формы еще не запустился //коды событий if (data.con == 1) { data.con = 0; data.SOBstr = ""; iniCAN(); data.SOBIT = true; } if (data.con == 2) { data.con = 0; data.SOBstr = ""; closeCAN(); data.SOBIT = true; } //clear buffer if (data.con == 5) { data.con = 0; data.SOBstr = ""; data.очередь.Clear(); pFORM.AddText("БУФЕР ОЧИЩЕН"); } //////////////////////////////////////////////////////////////////////// Thread.Sleep(100);// pFORM.AddText("main"); }//work
//***************************************************************************************** // ГЛАВНЫЙ ЦИКЛ ОСНОВНОГО ПОТОКА thread2 //***************************************************************************************** void main() { pFORM = data.adres_FORM1;//берем адрес формы if (data.adres_FORM1 == null) { Thread.Sleep(100); return; } //значит поток формы еще не запустился Thread.Sleep(500); try { if (data.port == null) { // pFORM.AddText(" test"); if (data.StartOpenport) { pFORM.AddText("Подключение... " + data.nameport); data.port = new SerialPort(data.nameport, 19200, Parity.None, 8, StopBits.One); try { data.StartOpenport = false; data.port.Handshake = Handshake.None; data.port.DtrEnable = true; data.port.RtsEnable = false; data.port.DataReceived += new SerialDataReceivedEventHandler(comPort_DataReceived); data.port.Open(); } catch (Exception ex) { pFORM.AddText("Ошибка открытия порта: " + ex.Message.ToString()); data.StartOpenport = false; data.port = null; } finally { pFORM.AddText("Подключение успешно "); Thread.Sleep(1000); } } } } catch { } }//work main
}//task void test() { rand = new Random(); data.connOK = true; pFORM.AddText("test run"); while (true) { if (!data.start_buff) { Thread.Sleep(100); continue; } data.test_read++; ДАННЫЕочередь buf = new ДАННЫЕочередь() { time = DateTime.Now,//data.getTIME(), strERROR = "", adr = (uint)rand.Next(255), sz = (byte)(rand.Next(7) + 1), b1 = (byte)rand.Next(255), b2 = (byte)rand.Next(255), b3 = (byte)rand.Next(255), b4 = (byte)rand.Next(255), b5 = (byte)rand.Next(255), b6 = (byte)rand.Next(255), b7 = (byte)rand.Next(255), b8 = (byte)rand.Next(255) }; //ПОМЕЩАЕМ В ОЧЕРЕДЬ Thread.Sleep(50); if (!data.АБОТА_С_ОЧЕРЕДЬЮ("write", buf)) { data.пропущенные++; } } }
void TASK_1()//============== TASK1 { if (iniTASK()) { return; } if (data.port != null && data.Transmit_Start) { byte[] bytes = { 0, 0 }; bytes[0] = data.TXdata.d1; bytes[1] = data.TXdata.d2; ushort crc = CRC16.ComputeChecksum(bytes); data.TXdata.crc1 = (byte)(crc >> 8); ushort tmp = (ushort)(crc << 8); data.TXdata.crc2 = (byte)(tmp >> 8); byte[] dt = { 0, 0, 0, 0, 0, 0, 0, 0 }; dt[0] = data.TXdata.SlaveAddres; dt[1] = data.TXdata.fun_code; dt[2] = data.TXdata.adr2; dt[3] = data.TXdata.adr1; dt[4] = data.TXdata.d2; dt[5] = data.TXdata.d1; dt[6] = data.TXdata.crc1; dt[7] = data.TXdata.crc2; data.port.Write(dt, 0, 8); // pFORM.AddText(String.Format("send1 {0};{1};{2};{3};{4};{5};{6};{7}; ", // dt[0], dt[1], dt[2], dt[3], dt[4], dt[5], dt[6], dt[7])); Thread.Sleep(100); bytes[0] = data.TXdata.d3; bytes[1] = data.TXdata.d4; crc = CRC16.ComputeChecksum(bytes); data.TXdata.crc1 = (byte)(crc >> 8); tmp = (ushort)(crc << 8); data.TXdata.crc2 = (byte)(tmp >> 8); dt[0] = data.TXdata.SlaveAddres; dt[1] = data.TXdata.fun_code; dt[2] = data.TXdata.adr1; dt[3] = data.TXdata.adr2; dt[4] = data.TXdata.d4; dt[5] = data.TXdata.d3; dt[6] = data.TXdata.crc1; dt[7] = data.TXdata.crc2; data.port.Write(dt, 0, 8); // pFORM.AddText(String.Format("send2 {0};{1};{2};{3};{4};{5};{6};{7}; ", // dt[0], dt[1], dt[2], dt[3], dt[4], dt[5], dt[6], dt[7])); pFORM.AddText("Отправка выполнена"); data.Transmit_Start = false; } Thread.Sleep(200); }//task1