.NET 4.x Подскажите пожалуйста как получить ответ от устройства через COM порт - C#
Формулировка задачи:
Всем привет. Встал вопрос работы с устройством на COM порту.
Это то, что есть. Есть даже протокол общения с устройством. Помогите пожалуйста, никак не могу получить сообщение в ответ.
Протокол:
1. 8N1, скорость передачи 115200 бит/с
2. Длина данных в посылке не более 1 Кбайт. Между посылками должен быть перерыв не менее 10 мс.
3. Передача идентификатора, длины данных, данных и контрольной суммы в ASCII-HEX виде
4. Поле длины данных — 2 байта старшим вперед
5. Tаймаут между байтами max 10 мс
6. Старт-символ, стоп-символы, идентификатор и контрольная сумма в длину не входят
7. Контрольная сумма включает в себя идентификатор, длину данных и данные.
8. Посылки с некорректной длиной (указанная длина данных не соответствует количеству переданных/принятых байт), контрольной суммой, идентификатором не равным 0х80, игнорируются.
9. Идентификатор – 0х80.
static void Main(string[] args) { string[] portnames = SerialPort.GetPortNames(); for (int i = 0; i < portnames.Length; i++) Console.WriteLine(portnames[i]); SerialPort port = new SerialPort(portnames[2]); port.Open(); string command = "S"; byte[] data = Encoding.UTF8.GetBytes(command); port.Write(data, 0, data.Length); byte[] dataR = new byte[500]; port.Read(dataR, 0, dataR.Length); int databyte = port.ReadByte(); Console.WriteLine(databyte); Console.ReadKey(); }
Неужели никто не знает?
Решение задачи: «.NET 4.x Подскажите пожалуйста как получить ответ от устройства через COM порт»
textual
Листинг программы
SerialPort port = new SerialPort(); port.PortName = "COM1"; port.BaudRate = 115200; port.Parity = Parity.Odd; port.DataBits = 8; port.StopBits = StopBits.One; port.ReadTimeout = 10; port.Open(); if (port.IsOpen) { string request = "S"; byte[] send = Encoding.ASCII.GetBytes(request); port.Write(send, 0, send.Length); Thread.Sleep(10); byte[] receive = new byte[1024]; int readed = port.Read(receive, 0, receive.Length); if (readed > 0) { string answer = Encoding.ASCII.GetString(receive); } port.Close(); }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д