SerialDevice C # Создать пользовательский стартовый байт - PullRequest
0 голосов
/ 20 мая 2018

Итак, я пытаюсь создать код C # для связи с последовательным устройством, подключенным к моему ПК.Но для этого устройства требуется стартовый байт для связи с моим кодом.Я пытаюсь отправить его после того, как класс SerialDevice создан, и я получаю его OutputStream, но устройство просто не отвечает вообще.

DeviceInformation этого устройства говорит, что оно не может спариться.Я думаю, это потому, что класс DeviceInformation запрашивает соединение с моим устройством, и он не отвечает, потому что ему не хватает байта Start.

Есть ли способ для меня создать пользовательское соединение с моим SerialDevice рядом с этим классом?

Или я могу настроить начальный байт в объявлении класса SerialDevice?

Ответы [ 2 ]

0 голосов
/ 20 мая 2018

Устройство, которое я пытаюсь интегрировать, требует, чтобы начальный байт был следующим:

#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, чтобы класс знал, как связаться с моим устройством.Но я не знаю как.

0 голосов
/ 20 мая 2018

Начальный байт: STX, 0x02.

Объясните больше, что вы уже сделали, если вам нужна дополнительная помощь!

...