none
UWP串口通讯问题 SerialDevice RRS feed

  • 问题

  • 最近做一个上位机程序(请求响应的那种);串口发送数据没得问题,但接受数据时(执行到 UInt32 bytesRead = await dr.LoadAsync(1024); 时没有任何报错信息就结束了-不向下执行)

        public async Task<Bool_Str> SendData(string strQuery)
            {
                Boolean successfullyOpenedDevice = false;
                String notificationMessage = null;
                using (DataWriter dw = new DataWriter(device.OutputStream))
                {
                    dw.WriteString(XmlFile.StrHead + strQuery + CalcBCC(XmlFile.StrHead + strQuery) + "\r");
                    UInt32 bytesWritten = await dw.StoreAsync();
                    if (bytesWritten > 0)
                    {
                        using (DataReader dr = new DataReader(device.InputStream))
                        {
                            UInt32 bytesRead = await dr.LoadAsync(1024);
                            if (bytesRead > 0)
                            {
                                successfullyOpenedDevice = true;
                                notificationMessage = dr.ReadString(bytesRead);
                            }
                        }
                    }
                }
                return new Bool_Str(successfullyOpenedDevice, notificationMessage);
            }

    2018年4月12日 8:20

全部回复

  • 你好,

    >>"但接受数据时(执行到 UInt32 bytesRead = await dr.LoadAsync(1024); 时没有任何报错信息就结束了-不向下执行)"

    对于这个问题,你需要加断点去调试,从两个方面入手,先检查你的device.InputStream是否为null,如果压根就没有数据返回给你,那你下面LoadAsync(1024)肯定会有问题的。

    第二点,你LoadAsync(1024),你要检查一下到底有没有1024,如果没有1024,它是会一直等下去的。


    MSDN Community Support
    Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com.

    2018年4月13日 3:01
  • 你好我断点瞧了的device.InputStream不为空(我是将串口的发送与接收线是连起来的);我也尝试写成LoadAsync(1)  ;我将断点打在

    UInt32 bytesRead = await dr.LoadAsync(1);

    这一行,进入断点我按下F10后没弹出任何异常信息程序就好像中断了(程序后面代码完全不执行,方法也没返回)

    我觉得是出现了异常但visual studio没监控到

    2018年4月13日 3:27
  • 你好我断点瞧了的device.InputStream不为空(我是将串口的发送与接收线是连起来的);我也尝试写成LoadAsync(1)  ;我将断点打在

    UInt32 bytesRead = await dr.LoadA

    sync(1);

    这一行,进入断点我按下F10后没弹出任何异常信息程序就好像中断了(程序后面代码完全不执行,方法也没返回)

    我觉得是出现了异常但visual studio没监控到

    那你可以直接以同步的方式去获取,看看是否会得到异常。

    dr.LoadAsync(1024).GetResults();
    


    MSDN Community Support
    Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com.

    2018年4月13日 6:07
  • 出现了异常(在意外的时间调用了方法)

    2018年4月13日 7:14
  • 建議你安裝這個工具, 在調試的時候可以觀察雙方是否真的有傳遞資料, 以及資料的內容。

    AccessPort


    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。

    2018年4月13日 14:47
  • 串口数据监控软件我用了的,能看到发送的消息但没有响应数据,所以我能确认数据是发送成功了的;但接收数据

     UInt32 bytesRead = await dr.LoadAsync(1024);

    可以确认这行代码出现了异常,但visual studio不抛出来,程序有时就直接结束了;

    2018年4月16日 2:41
  • 如果是 PC --> Device 發送有訊息, 而 Device 沒有響應數據回傳。

    那應該是發送的訊息命令不正確吧。


    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。

    2018年4月16日 3:42
  • 发送数据接受数据的代码我贴上来的,我也不知道哪儿有问题;

    如果你说的是Device没回复信息,应该不会存在这个问题,因为我将串口的发送线与接受线连起来的,也就是说我发送了什么就能接收到什么

    2018年4月16日 7:40