写入时出现串口问题

时间:2018-11-20 14:59:38

标签: uwp serial-port modbus

我想每10秒与一个串口(modbus rsu 485)通话/收听一次。 (UWP项目)

我遵循了Microsoft提出的官方示例,并适应了我的个人情况。

我面临的问题是,随机WriteAsync()任务因此两次写入消息……例如,它应该写“ hello”,而不是写“ hellohello”,从而在“ System.Exception”中生成未处理的异常在System.Private.CoreLib.dll中...

这是rilevant代码:

public async Task WriteAsync()
    {
        DataWriter dataWriter = new DataWriter(PortaSeriale.OutputStream);

        string Funzione03 = "0x01 0x03 0x80 0x01 0x00 0x04 0x3C 0x09";

        byte[] bytes = Funzione03.Split(' ').Select(item => Convert.ToByte(item, 16)).ToArray();

        if (dataWriter != null)
        {
            dataWriter.WriteBytes(bytes);
            await dataWriter.StoreAsync().AsTask();
            dataWriter.DetachStream();                
            dataWriter = null;                
        }
    }

这是读取功能

public async Task<string> ReadAsync(uint ReadBufferLength)
    {
        Task<UInt32> loadAsyncTask;
        byte[] ByteLettura = null;           
        dataReader.InputStreamOptions = InputStreamOptions.Partial;          

        loadAsyncTask = dataReader.LoadAsync(ReadBufferLength).AsTask();

        UInt32 bytesRead = await loadAsyncTask; //base 32bit

        if (bytesRead > 0) //se leggi byte, convertili in Hexadecimal
        {

            ByteLettura = dataReader.ReadBuffer(bytesRead).ToArray();
            string HexMessage = string.Join("-", ByteLettura.Select(item => item.ToString("X2")));

            return HexMessage;}
        return $""; 
    }

计时器在MainPage中设置,每10秒滴答一次。如有必要,我将发布其代码。

我不知道该如何处理...有什么建议吗?

thx!

0 个答案:

没有答案