Можно считывать только одно температурное считывание с процессора датчика, для других датчиков оно не работает
За один раз с датчика можно снять только одно значение. Я использовал концепцию асинхронных сокетов, то есть он считывает только температуру процессора одного датчика за один раз. Когда вы добавляете больше, это показывает, что есть ошибка. Любые идеи будут оценены по достоинству.
После выполнения заданий все потоки успешно запустились, а затем возникла проблема при инициализации для 2-го датчика, отображающая "Error TemperatureMesurement-Job initialization 4_cam2_temperature:обычно каждый адрес сокета (протокол, сетевой адрес или соединение) может быть использован только один раз"(ссылка на initializejob вверху), а затем проблема в requestdata() для датчика 2, указывающая "Error TemperatureMesurement-Job requestData 4_cam2_temperature:ссылка на объект не была установлена на экземпляр объекта". Используемый класс исключений-это класс System.exception.
И только с помощью temperatureGauge.udp, а не temperatureGauge.GMH3700. Он запрашивает температуру только у определенного датчика, а не у других, как показано в коде ASCII –
Чтобы сделать его простым, проблема в основном здесь:
Тот показывает сообщение об ошибке:
"Ошибка TemperatureMesurement-инициализация задания 4_cam2_temperature:обычно каждый адрес сокета (протокол, сетевой адрес или соединение) может быть использован только один раз"
public override void initializeJob() { try { if (TempDevice == temperatureGauge.udp) { camIP = parameters[0]; socketCmdText = new UdpClient(cmdTextPort); socketCmdText.BeginReceive(new AsyncCallback(OnUdpDataCmdText), socketCmdText); socketCmd = new UdpClient(cmdPort); socketCmd.BeginReceive(new AsyncCallback(OnUdpDataCmd), socketCmd); } if (TempDevice == temperatureGauge.GMH3700) { PortGMH3700.PortName = ComPortbyUser; PortGMH3700.BaudRate = 4800; /* Baudrate '4800' oder '38400' */ PortGMH3700.Parity = Parity.None; PortGMH3700.DataBits = 8; PortGMH3700.StopBits = StopBits.One; PortGMH3700.DtrEnable = true; PortGMH3700.RtsEnable = false; PortGMH3700.Open(); } } catch (Exception e) { Console.WriteLine("Error TemperatureMesurement-Job initialization " + jobName + " : " + e.Message); }
Тот показывает сообщение об ошибке:
""Ошибка TemperatureMesurement-Job requestData 4_cam2_temperature:ссылка на объект не была установлена на экземпляр объекта"
private void requestData() { try { IPAddress _camip = IPAddress.Parse(camIP); IPEndPoint _ep = new IPEndPoint(_camip, cmdTextPort); byte[] _sendbuf = Encoding.ASCII.GetBytes("Cmd_ISL_GetCurrentSensorTemperature"); socketCmdText.Send(_sendbuf, _sendbuf.Length, _ep); byte[] _sendbuf2 = Encoding.ASCII.GetBytes("Get_Temp"); socketCmdText.Send(_sendbuf2, _sendbuf2.Length, _ep); /* byte[] _sendbuf3 = Encoding.ASCII.GetBytes("APP_Version"); socketCmdText.Send(_sendbuf3, _sendbuf3.Length, _ep); IPEndPoint _ep2 = new IPEndPoint(_camip, cmdPort); Byte[] _sendbuf4 = { 0x02, 0x00, 0x00, 0x10, 0x01, 0x00, 0x00, 0x00, 0xED }; socketCmd.Send(_sendbuf4, _sendbuf4.Length, _ep2); */ } catch (Exception e) { Console.WriteLine("Error TemperatureMesurement-Job requestData " + jobName + " : " + e.Message); }
Что я уже пробовал:
Любые идеи будут оценены по достоинству. Спасибо