UWP C# UART RS485 Polling Issue

MY Lim 1 Reputation point
2020-11-11T09:53:02.603+00:00

Hi, I have my UART for RS485 using a FTDI USB to 485 cable connected to Raspberry Pi on Windows IoT Core. I set a dispatchertimer at every 1second to transmit polling to respective field devices. I am able to tx and rx the 485 data with no problem. However, after the polling loop to about 20 times it just crash and exited the debug mode. I used try & catch to trap the exception but could not get it. However, i manage to read the error message at the debug output pane - The program [0xBB0] PwD.exe' has exited with code -1073741811 (0xc000000d).

I am not sure what caused the problem and where did I do wrong?

Please help. Thanks.

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";
            });
        }
    }
Windows for IoT
Windows for IoT
A family of Microsoft operating systems designed for use in Internet of Things (IoT) devices.
381 questions
Universal Windows Platform (UWP)
{count} votes