Serielport
Jeg er ved at lave en DLL der kommuniker med en COMPORT enhed.Når jeg sender data via m_objSerialPort.Write(Command,0,Command.Length);
Modtager jeg samtlige data jeg lige har sendt med det samme.
Nogle der ved hvad jeg gør galt?
Hardware mæssigt er det iorden.
public bool WriteData(byte[] Command)
{
data.Clear();
m_objSerialPort.Write(Command, 0, Command.Length);
int byteToWrite = m_objSerialPort.BytesToWrite;
int byteToRead = m_objSerialPort.BytesToRead;
System.Threading.Thread.Sleep(500);
m_objSerialPort.DiscardInBuffer();
return true;
}
SerialPort m_objSerialPort = new SerialPort();
private void m_objSerialPort_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
{
SerialPort sp = (SerialPort)sender;
try
{
if (!sp.BytesToRead.Equals(null))
{
byteRec = (byte)sp.ReadByte();
data.Add(byteRec);
}
}
catch (Exception ex)
{
InfoMessage = "Error";
}
}
public bool SetComPort(String comPort)
{
try
{
m_objSerialPort.PortName = comPort;
m_objSerialPort.DataBits = 8;
m_objSerialPort.BaudRate = 1200;
m_objSerialPort.Parity = Parity.None;
m_objSerialPort.StopBits = StopBits.One;
m_objSerialPort.Handshake = Handshake.None;
m_objSerialPort.DtrEnable = true;//Data Terminal Ready
m_objSerialPort.RtsEnable = true;//Requist To Sent
m_objSerialPort.ReadTimeout = 2000;
m_objSerialPort.WriteTimeout = 2000;
m_objSerialPort.ReadBufferSize = 1024;
//sp.Encoding = Encoding.GetEncoding("iso-8859-1");
m_objSerialPort.Encoding = Encoding.Default;
m_objSerialPort.DataReceived += new SerialDataReceivedEventHandler(m_objSerialPort_DataReceived);
}
catch (Exception ex)
{
return (false);
}
return (true);
}
byte[] Commands = {0x80,0xB0,0xD1,0x00,0x00,0xA3,0x75,0x0D};
private void Form1_Load(object sender, EventArgs e)
{
bool Status = SetComPort("COM4");
if (Status)
{
OpenSerielPort();
}
}
private void button1_Click(object sender, EventArgs e)
{
WriteData(Commands);
textBox1.Clear();
for (int i = 0; i < data.Count; i++)
{
if (textBox1.InvokeRequired)
{
textBox1.Invoke((MethodInvoker)(() => textBox1.Text += data[i].ToString("X") + " "));
}
else
{
textBox1.Text += data[i].ToString("X") + " ";
}
}
data.Clear();
}