Я использую этот код для чтения чипа RFID SN через считыватель ftdi usb. Я хочу использовать RFID SN (0DBFFC21) позже в SQL-запросах.
Моя проблема в том, что я получаю SN много раз, разбитый на две строки ... Как мне поставить задержку или что-то в этом роде, чтобы я мог каждый раз получать полную строку?
#region Namespace Inclusions
using System;
using System.IO.Ports;
using System.Windows.Forms;
#endregion
namespace SerialPortExample
{
class SerialPortProgram
{
// Create the serial port with basic settings
private SerialPort port = new SerialPort("COM1",
9600, Parity.None, 8, StopBits.One);
[STAThread]
static void Main(string[] args)
{
// Instatiate this class
new SerialPortProgram();
}
private SerialPortProgram()
{
Console.WriteLine("Incoming Data:");
// Attach a method to be called when there
// is data waiting in the port's buffer
port.DataReceived += new
SerialDataReceivedEventHandler(port_DataReceived);
// Begin communications
port.Open();
// Enter an application loop to keep this thread alive
Application.Run();
}
private void port_DataReceived(object sender,
SerialDataReceivedEventArgs e)
{
// Show all the incoming data in the port's buffer
Console.WriteLine(port.ReadExisting());
}
}
}
port.BytesToRead
, когда событиеDataReceived
запускается каждый раз? Соответствует ли это прочитанной строке? - person Mong Zhu   schedule 21.02.20170DBFFC21
. И проблема хорошо известна (хотя не удается найти красивый дубликат, возможно, этот).SerialPort.DataReceived
не гарантируется, что будет повышен для полного пакета (я полагаю, если вы не установите тайм-аут и не используете рукопожатие), это может произойти после получения всего одного байта. Вы должны сами объединять сообщения. - person Sinatr   schedule 21.02.20170DBFFC210DB
). Вы что-нибудь знаете наверняка? Например. всегда ли это 8 символов, отправляется ли оно каждую секунду и т. д.? - person Sinatr   schedule 21.02.2017