надо послать 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
}
}
}
Вроде все верно. Но программа ничего не показывает. Где может закрасться ошибка?
Ответ
Причин может быть много:
возможно у вас в системе несколько СОМ-портов и вы отправляете не
на тот;
устройство которому вы отправляете посылку ничего не
отвечает;
скорость не подходит, попробуйте поставить, например,
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();
}
Комментариев нет:
Отправить комментарий