Пробую создать приложение с получением данных (температура) от ТРМ1-Щ1.У2.У.RS и их выводом на Visual Studio C# с библиотекой OwenioNet.dll и OwenioNet.DataConverter.dll. Читая описание протокола OWEN и мануал к библиотеке OwenioNet , а также читая форум с поисках рабочего примера я написал следующий код.
На строчке owenProtocol.OwenRead(adresTrm, AddressLengthType.Bits8, "Fun1");Код:int adresTrm = 16; //пробовал писать 0x16 / ошибка также не уходит SerialPortAdapter spOwen2 = new SerialPortAdapter(3, 9600, Parity.None, 8, StopBits.One); spOwen2.Open(); var owenProtocol = OwenProtocolMaster.Create(spOwen2); if (spOwen2.IsOpened != true) { MessageBox.Show("Ошибка открытия порта COM1: {0}", spOwen2.ToString()); } owenProtocol.OwenRead(adresTrm, AddressLengthType.Bits8, "Fun1");//без индекса // тут ошибка System.TimeoutException: "Время ожидания операции истекло." owenProtocol.OwenRead(adresTrm, AddressLengthType.Bits8, "Fun1", 0x3456);//c индексом owenProtocol.OwenWrite(adresTrm, AddressLengthType.Bits8, "Fun1", new byte[] { 0x45, 0x87 });//без индекса owenProtocol.OwenWrite(adresTrm, AddressLengthType.Bits8, "Fun1", new byte[] { 0x45, 0x87 }, 0x3456);//с индексом (это переработанный пример из документации. не думаю что индекс в моём варианте нужен spOwen2.Close();
Получил ошибку "System.TimeoutException: "Время ожидания операции истекло.""
Почитал ещё темы у меня честно нет понимания почему так происходит. По задумке как я понял должно работать а оно не работает.
Предполагаю что я пишу неверное адрес но оба варианта не подходят. Ни 16 ни 0x16. (адрес именно такой в настройках ТРМ)
Тип протокола RS-485 на самом ТРМ как я понял надо поставить ASCII.
Owen Monitor например нормально подключается и отображает температуру. Owen Configurator тоже подключается и можно посмотреть конфиги.
А вот программа на C# подключается НО будто бы не получает то что нужно или не отправляет. я не могу понять. Пишу подобные программы впервые. До этого имел опыт разве что работы с ардуинкой.
Я скачал программу Serial Port Monitor, и прослушал порт, что бы понимать что там происходит.
Из того что я понял приложение отправляет в порт сообщение. Но в ответ получает нули. (почему?..) Я тестировал и приём данных и запись. Оба варианта дают ошибку.
В компьютер от ТРМ в USB воткнут вот этот конвертер. (напомню что Owen Monitor с ним нормально работает)
usb_rs485_1_d.jpg
Что я делаю не так? И как должно быть?
Мне нужно всего-то вывести данные с 6 таких ТРМов в приложение большим шрифтом что бы видно было с далека. (поэтому увы Owen Monitor не подходит.)
Задача вроде простая но я стопарюсь на самом старте.
попытка чтения
попытка чтения — копия.PNG
попытка записи
попытка записи — копия.PNG


Ответить с цитированием
