#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()
Комментариев нет:
Отправить комментарий