Refactor `NfcHanler` namespace to `NfcHandler` and enhance code consistency.
224 lines
8.2 KiB
C#
224 lines
8.2 KiB
C#
using System;
|
|
using System.IO.Ports;
|
|
using JetBrains.Annotations;
|
|
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
|
using NfcC7_DLL.NfcHandler.Utils;
|
|
|
|
namespace NfcC7_DLL.Tests.NfcHanler.Utils;
|
|
|
|
//[TestClass]
|
|
[TestSubject(typeof(SERIAL_Driver))]
|
|
public class SERIAL_DriverTest
|
|
{
|
|
private class Con
|
|
{
|
|
public string com = "COM5";
|
|
public int baudrate = 38400;
|
|
public int dataBits = 8;
|
|
public Parity parity = Parity.None;
|
|
public StopBits stopbits = StopBits.Two;
|
|
public int readTimeout = 5000;
|
|
public int writeTimeout = 1000;
|
|
}
|
|
|
|
private readonly byte[] Open =
|
|
{ 0x6B, 0x80, 0x01, 0x10, 0x00, 0x30, 0x00, 0x47, 0x6C, 0x6F, 0x62, 0x61, 0x6C, 0x49, 0x50, 0x65, 0x72,
|
|
0x6C, 0x55, 0x74, 0x69, 0x6C, 0x69, 0x74, 0x79, 0x00, 0x00, 0x27, 0xD7 };
|
|
private readonly byte[] CommDeviceSessionEnd = { 0x6B, 0x61, 0x00, 0x10, 0x05, 0x31, 0x00, 0x1F, 0x29, 0xF9, 0xC5 };
|
|
|
|
private readonly byte[] ProductDetails =
|
|
{ 0x6B, 0x30, 0x01, 0x10, 0x03, 0x21, 0x01, 0x02, 0x6B, 0x90, 0x00, 0x00, 0x11, 0x40, 0x05, 0x00, 0x02, 0x04, 0x60, 0x62, 0x42, 0x04, 0xA5, 0x64 };
|
|
|
|
private readonly byte[] ProductDetails2 =
|
|
{ 0x6B, 0x30, 0x01, 0x10, 0x03, 0x21, 0x01, 0x02, 0x6B, 0x90, 0x00, 0x00, 0x11, 0x40, 0x05, 0x00, 0x02, 0x04, 0x60 };
|
|
|
|
static Con con5 = new Con(){
|
|
com = "COM5",
|
|
baudrate = 38400,
|
|
dataBits = 8,
|
|
parity = Parity.None,
|
|
stopbits = StopBits.Two,
|
|
readTimeout = 5000,
|
|
writeTimeout = 1000
|
|
};
|
|
static Con con6 = new Con()
|
|
{
|
|
com = "COM6",
|
|
baudrate = 38400,
|
|
dataBits = 8,
|
|
parity = Parity.None,
|
|
stopbits = StopBits.Two,
|
|
readTimeout = 5000,
|
|
writeTimeout = 1000
|
|
};
|
|
|
|
|
|
|
|
//[TestMethod]
|
|
public void SendMessage_Test()
|
|
{
|
|
Con con = con5;
|
|
|
|
byte[] message = Open;
|
|
byte[] bytesReceived;
|
|
|
|
SERIAL_Driver driver = new SERIAL_Driver();
|
|
bool isopen = driver.OpenConnection(
|
|
con.com,
|
|
con.baudrate,
|
|
con.dataBits,
|
|
con.parity,
|
|
con.stopbits,
|
|
con.readTimeout,
|
|
con.writeTimeout);
|
|
Assert.IsTrue(isopen);
|
|
driver.SendMessage(message, message.Length);
|
|
//Assert.IsTrue(driver.GetRawData().Length == 0);
|
|
bytesReceived = driver.GetRawData();
|
|
//Assert.IsTrue(bytesReceived.Length > 0);
|
|
Console.WriteLine("IsOpened: {0}", driver.isOpen());
|
|
// Display raw bytes (as hex or byte count)
|
|
if (bytesReceived != null)
|
|
{
|
|
Console.WriteLine(string.Format("Bytes received: {0}", bytesReceived.Length));
|
|
Console.WriteLine(string.Format("Bytes (hex): {0}", BitConverter.ToString(bytesReceived)));
|
|
string response = System.Text.Encoding.UTF8.GetString(bytesReceived);
|
|
Console.WriteLine("Bytes string: {0}", response);
|
|
}
|
|
|
|
// --- Get Serial No ---
|
|
message = ProductDetails;
|
|
// Send Open message
|
|
bool sendSuccess = driver.SendMessage(message, message.Length);
|
|
Assert.IsTrue(sendSuccess, "Failed to send Open message");
|
|
Console.WriteLine("Sent message for product details: {0}", message.ToString());
|
|
bytesReceived = driver.GetRawData();
|
|
// Display raw bytes (as hex or byte count)
|
|
if (bytesReceived != null)
|
|
{
|
|
Console.WriteLine(string.Format("Bytes received: {0}", bytesReceived.Length));
|
|
Console.WriteLine(string.Format("Bytes (hex): {0}", BitConverter.ToString(bytesReceived)));
|
|
string response = System.Text.Encoding.UTF8.GetString(bytesReceived);
|
|
Console.WriteLine("Bytes string: {0}", response);
|
|
}
|
|
else
|
|
{
|
|
Console.WriteLine("Response not received!");
|
|
}
|
|
|
|
message = CommDeviceSessionEnd;
|
|
driver.SendMessage(message, message.Length);
|
|
|
|
driver.Close();
|
|
|
|
}
|
|
|
|
|
|
//[TestMethod]
|
|
public void SendMessage_TestLoop()
|
|
{
|
|
Con con = con6;
|
|
|
|
byte[] message = {0x00};
|
|
byte[] bytesReceived;
|
|
|
|
SERIAL_Driver driver = new SERIAL_Driver();
|
|
bool isopen = driver.OpenConnection(
|
|
con.com,
|
|
con.baudrate,
|
|
con.dataBits,
|
|
con.parity,
|
|
con.stopbits,
|
|
con.readTimeout,
|
|
con.writeTimeout);
|
|
Assert.IsTrue(isopen);
|
|
|
|
for (int iStep = 0; iStep < 100; iStep++)
|
|
{
|
|
driver.SendMessage(message, message.Length);
|
|
//Assert.IsTrue(driver.GetRawData().Length == 0);
|
|
bytesReceived = driver.GetRawData();
|
|
Assert.IsTrue(bytesReceived.Length > 0);
|
|
Console.WriteLine("IsOpened: {0}", driver.isOpen());
|
|
// Display raw bytes (as hex or byte count)
|
|
Console.WriteLine(string.Format("Bytes received: {0}", bytesReceived.Length));
|
|
Console.WriteLine(string.Format("Bytes (hex): {0}", BitConverter.ToString(bytesReceived)));
|
|
string response = System.Text.Encoding.UTF8.GetString(bytesReceived);
|
|
Console.WriteLine("Bytes string: {0}", response);
|
|
}
|
|
|
|
//message = CommDeviceSessionEnd;
|
|
//driver.SendMessage(message, message.Length);
|
|
|
|
driver.CloseConnection();
|
|
|
|
}
|
|
|
|
|
|
//[TestMethod]
|
|
public void SendMessage_TestGetSerialNo()
|
|
{
|
|
Con con = con6;
|
|
byte[] message = Open;
|
|
byte[] bytesReceived;
|
|
|
|
SERIAL_Driver driver = new SERIAL_Driver();
|
|
bool isopen = driver.OpenConnection(
|
|
con.com,
|
|
con.baudrate,
|
|
con.dataBits,
|
|
con.parity,
|
|
con.stopbits,
|
|
con.readTimeout,
|
|
con.writeTimeout);
|
|
Assert.IsTrue(isopen);
|
|
|
|
driver.SendMessage(message, message.Length,con.readTimeout);
|
|
//Assert.IsTrue(driver.GetRawData().Length == 0);
|
|
bytesReceived = driver.GetRawData();
|
|
Assert.IsTrue(bytesReceived.Length > 0);
|
|
if (bytesReceived[0] == 0xFF)
|
|
Console.WriteLine("Error message: {0}", driver.ErrorMessage);
|
|
// Display raw bytes (as hex or byte count)
|
|
Console.WriteLine("IsOpened: {0}", driver.isOpen());
|
|
Console.WriteLine(string.Format("Bytes received: {0}", bytesReceived.Length));
|
|
Console.WriteLine(string.Format("Bytes (hex): {0}", BitConverter.ToString(bytesReceived)));
|
|
string response = System.Text.Encoding.UTF8.GetString(bytesReceived);
|
|
Console.WriteLine("Bytes string: {0}",response);
|
|
|
|
// --- Get Serial No ---
|
|
message = ProductDetails;
|
|
driver.SendMessage(message, message.Length,con.readTimeout);
|
|
bytesReceived = driver.GetRawData();
|
|
Assert.IsTrue(bytesReceived.Length > 0);
|
|
if (bytesReceived[0] == 0xFF)
|
|
Console.WriteLine("Error message: {0}", driver.ErrorMessage);
|
|
// Display raw bytes (as hex or byte count)
|
|
Console.WriteLine("IsOpened: {0}", driver.isOpen());
|
|
Console.WriteLine(string.Format("Bytes received: {0}", bytesReceived.Length));
|
|
Console.WriteLine(string.Format("Bytes (hex): {0}", BitConverter.ToString(bytesReceived)));
|
|
response = System.Text.Encoding.UTF8.GetString(bytesReceived);
|
|
Console.WriteLine("Bytes string: {0}",response);
|
|
|
|
// --- Get Serial No ---
|
|
message = ProductDetails2;
|
|
driver.SendMessage(message, message.Length,con.readTimeout);
|
|
bytesReceived = driver.GetRawData();
|
|
Assert.IsTrue(bytesReceived.Length > 0);
|
|
if (bytesReceived[0] == 0xFF)
|
|
Console.WriteLine("Error message: {0}", driver.ErrorMessage);
|
|
// Display raw bytes (as hex or byte count)
|
|
Console.WriteLine("IsOpened: {0}", driver.isOpen());
|
|
Console.WriteLine(string.Format("Bytes received: {0}", bytesReceived.Length));
|
|
Console.WriteLine(string.Format("Bytes (hex): {0}", BitConverter.ToString(bytesReceived)));
|
|
response = System.Text.Encoding.UTF8.GetString(bytesReceived);
|
|
Console.WriteLine("Bytes string: {0}",response);
|
|
|
|
|
|
message = CommDeviceSessionEnd;
|
|
driver.SendMessage(message, message.Length);
|
|
|
|
driver.Close();
|
|
|
|
}
|
|
} |