问题描述
我以前有posted的问题,但是还没有真正发现问题。 最近,我发现了有关detachbuffer的帖子,想知道这是否可能是我遇到问题的原因。
我使用FTDI USB转485电缆将RS485的UART连接到Windows IoT核心版上的RaspBerry Pi。
我每1秒钟将dispatchertimer
设置为transmit
轮询到相应的现场设备。
我可以tx
和rx
毫无问题地访问485数据。
但是,在轮询循环达到大约20次之后,它便崩溃并退出了调试模式。
我使用try & catch
捕获异常,但无法获取。但是,我设法在debug output
窗格-The program [0xBB0] PwD.exe' has exited with code -1073741811 (0xc000000d).
我想知道我是否重复发送轮询,dataWriteObject.DetachBuffer();
会引起问题吗?
谢谢。
我的代码段如下;
private void PollTimer_Tick(object sender,object e)
{
if (pollCounter <= maxDevice)
{
var a = pollCounter | 0x80;
pollCounter++;
TxAdr = Convert.ToByte(a);
TxCmd = TxPoll;
TxPollCard();
}
else pollCounter = 0;
}
private async void TxPollCard()
{
if (serialPort != null)
{
List<byte> data = new List<byte>();
data.Add(TxHeader);
data.Add(TxAdr);
data.Add(TxCmd);
TxChkSum = 0;
foreach (byte a in data)
{
TxChkSum += a;
}
TxChkSum = (byte)(TxChkSum - 0x80);
data.Add(TxChkSum);
try
{
// Create the DataWriter object and attach to OutputStream
dataWriteObject = new DataWriter(serialPort.OutputStream);
dataWriteObject.WriteBytes(data.ToArray());
Task<UInt32> storeAsyncTask;
// Launch an async task to complete the write operation
storeAsyncTask = dataWriteObject.StoreAsync().AsTask();
UInt32 bytesWritten = await storeAsyncTask;
dataWriteObject.DetachBuffer();
}
catch (Exception ex)
{
await dispatcher.RunAsync(CoredispatcherPriority.normal,() =>
{
MainStatusdisplay.Text = ex.Message;
});
}
}
else
{
await dispatcher.RunAsync(CoredispatcherPriority.normal,() =>
{
MainStatusdisplay.Text = "No UART port found";
});
}
}
更新:
我进行了其他测试,我断开了设备的连接并继续传输,而没有期望的响应,它没有崩溃。
另一方面,我停止传输并且仅listen
到485总线,它也没有崩溃。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)