.NET 4.x Работа с считывателем PERCo-IR05 - Выполнить считывание карты через ReadLine - C#
Формулировка задачи:
Здравствуйте, не удаётся выполнить считывание карты через ReadLine(), плюс временами не работает порт, вот код ;
SerialPort mySerialPort = new SerialPort("COM3", 9600);
private void button1_Click(object sender, EventArgs e)
{
try {
var data_for_controller = new byte[7] { 242, 255, 3, 1, 0, 26, 24 };
var data_for_controller1 = new byte[7] { 242, 255, 1, 2, 0, 26, 24 };
if (mySerialPort.IsOpen == false)
{
mySerialPort.Open();
mySerialPort.Write(data_for_controller, 0, 7);
mySerialPort.Write(data_for_controller, 0, 7);
int byteRecieved = mySerialPort.BytesToRead;
byte[] messByte = new byte[byteRecieved];
//считывание данных
string k=mySerialPort.ReadLine();
mySerialPort.DiscardInBuffer();
mySerialPort.Close();
}
}
catch
{
}
}Решение задачи: «.NET 4.x Работа с считывателем PERCo-IR05 - Выполнить считывание карты через ReadLine»
textual
Листинг программы
var data_for_controller = new byte[7] { 242, 255, 3, 1, 0, 26, 24 };
var data_for_controller1 = new byte[7] { 242, 255, 1, 2, 0, 26, 24 };
mySerialPort.Open();
mySerialPort.Write(data_for_controller, 0, 7); // 1- запрос
Thread.Sleep(500);
int byteRecieved = mySerialPort.BytesToRead;
byte[] messByte = new byte[byteRecieved];
k = "";
for (int i = 0; i < byteRecieved; i++) // первое чтение
{
messByte[i] = (byte)mySerialPort.ReadByte();
k += messByte[i].ToString();
}
textBox1.Text = k;
mySerialPort.DiscardInBuffer(); // очищаем буфер
mySerialPort.Write(data_for_controller1, 0, 7); //2 - запрос
Thread.Sleep(500);
byteRecieved = mySerialPort.BytesToRead;
messByte = new byte[byteRecieved];
k = "";
for (int i = 0; i < byteRecieved; i++) // второе чтение
{
messByte[i] = (byte)mySerialPort.ReadByte();
k += messByte[i].ToString();
}
textBox1.Text += k;
mySerialPort.DiscardInBuffer(); // очищаем буфер
mySerialPort.Close();