我想每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!