Устройство, которое я пытаюсь интегрировать, требует, чтобы начальный байт был следующим:
#define FINGERPRINT_STARTCODE 0xEF01
Это код C, который находится в документации устройства.Поскольку я пытаюсь перенести его в C #, я не могу изменить начальный байт, и поэтому устройство не отвечает на мой код C #.
Это я объявляю SerialDevice:
string aqs = SerialDevice.GetDeviceSelector("UART0");
var dis = await DeviceInformation.FindAllAsync(aqs);
UartPort = await SerialDevice.FromIdAsync(dis[0].Id);
UartPort.WriteTimeout = TimeSpan.FromMilliseconds(1000);
UartPort.ReadTimeout = TimeSpan.FromMilliseconds(1000);
UartPort.BaudRate = 9600;
UartPort.Parity = SerialParity.None;
UartPort.StopBits = SerialStopBitCount.One;
UartPort.DataBits = 8;
DataWriterObject = new DataWriter(UartPort.OutputStream);
DataReaderObject = new DataReader(UartPort.InputStream);
А потом я пытаюсь отправить данные через DataWriter с моим начальным байтом:
private async Task<int> EnviarPacote(Package package)
{
int sum;
DataWriterObject.WriteBytes(package.start);
DataWriterObject.WriteByte(package.address[0]);
DataWriterObject.WriteByte(package.address[1]);
DataWriterObject.WriteByte(package.address[2]);
DataWriterObject.WriteByte(package.address[3]);
DataWriterObject.WriteInt16(package.type);
int tamanho = 12;
DataWriterObject.WriteInt32(tamanho);
//DataWriterObject.WriteBytes(package.length);
sum = tamanho + package.type;
foreach (var dado in package.data)
{
DataWriterObject.WriteByte(dado);
}
DataWriterObject.WriteInt32(12);
await UartPort.OutputStream.WriteAsync(DataWriterObject.DetachBuffer());
return sum;
}
И это просто не работает.
Полагаю, мне нужно что-то изменить в объявлении SerialDevice, чтобы класс знал, как связаться с моим устройством.Но я не знаю как.