#c_sharp #com_порт
надо послать 0x55 на 3 ком-порт с одним стоп битом. using System; using System.IO.Ports; namespace Com { class Program { static void Main(string[] args) { try { SerialPort _serialPort = new SerialPort("COM3", 2400, Parity.None, 8, StopBits.One); _serialPort.Handshake = Handshake.None; _serialPort.Open(); _serialPort.DataReceived += new SerialDataReceivedEventHandler(sp_DataReceived); byte sent = 0x55; Console.WriteLine("sent: {0}", sent); _serialPort.Write(new byte[1] { sent }, 0, 1); } catch (Exception e) { Console.WriteLine("Exception:, {0}", e); } } private static void sp_DataReceived(object sender, SerialDataReceivedEventArgs e) { SerialPort sp = (SerialPort)sender; string indata = sp.ReadExisting(); Console.WriteLine("Data Received:, {0}", indata); Console.ReadLine(); //Pause } } } Вроде все верно. Но программа ничего не показывает. Где может закрасться ошибка?
Ответы
Ответ 1
Причин может быть много: возможно у вас в системе несколько СОМ-портов и вы отправляете не на тот; устройство которому вы отправляете посылку ничего не отвечает; скорость не подходит, попробуйте поставить, например, 1200; попробуйте поменять таймауты. _serialPort.ReadTimeout = 500; _serialPort.WriteTimeout = 500; Или же ваша программа закрывается еще до получения ответа. Попробуйте так: static void Main(string[] args) { try { SerialPort _serialPort = new SerialPort("COM3", 2400, Parity.None, 8, StopBits.One); _serialPort.Handshake = Handshake.None; _serialPort.Open(); _serialPort.DataReceived += new SerialDataReceivedEventHandler(sp_DataReceived); byte sent = 0x55; Console.WriteLine("sent: {0}", sent); _serialPort.Write(new byte[1] { sent }, 0, 1); } catch (Exception e) { Console.WriteLine("Exception:, {0}", e); } Console.ReadKey(); }Ответ 2
Ваша программа ничего не показывает потому что завершается. Поставьте в конец Main вызов Console.ReadLine()
Комментариев нет:
Отправить комментарий