Visual Studio 2013 SerialPort未接收所有数据

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Visual Studio 2013 SerialPort未接收所有数据相关的知识,希望对你有一定的参考价值。

我目前正在开发一个需要PIC 24FV16KA302与PC软件之间进行串行通信的项目。

我在过去3天搜索过互联网,我找不到问题的答案所以我决定在这里问一下。这是我的第一个视觉工作室程序,所以我没有任何使用该软件的经验。

PIC需要在PC端查看和修改几个变量和两个8x16表。问题出现在我发送表格时,收到的所有其他信息都没有问题。我通过uart使用串行连接(38400/8-N-1)到usb转换器FT232

当PC向PIC发送“AT + RTPM”时。

Button7.Click
    SerialPort1.ReceivedBytesThreshold = 128
    MachineState = MS.Receive_table
    SerialPort1.Write("AT+RTPM")
End Sub

PIC发回128字节(表中的值)

case read_table_pwm : // send pwm table 
        for (yy = 0 ; yy < 8 ; yy ++) {
            for (xx = 0 ; xx < 16 ; xx++ ) {
                uart_send_char(controll_by_pmw_map_lb[yy][xx]) ;
            } 
        }
           at_command = receive_state_idle ;
    break ;

该软件假设在DataGrid中获取和显示。

Private Sub SerialPort1_DataReceived(sender As Object, e As IO.Ports.SerialDataReceivedEventArgs) Handles SerialPort1.DataReceived
    If MachineState = MS.Receive_table Then
        SerialPort1.Read(Buffer_array_received_data, 0, 128)
        cellpos = 0
        For grid_y As Int16 = 0 To 7 Step 1
            For grid_x As Int16 = 0 To 15 Step 1
                DataGridView1.Rows(grid_y).Cells(grid_x).Value = Buffer_array_received_data(cellpos)
                cellpos += 1
            Next
        Next

End Sub

问题是大部分时间(99%)它只显示数据集的一部分并且到最后显示零,当我再次尝试时它显示另一部分并从头开始。

First request Second request

如果我尝试与另一个程序相同的东西,我总是得到完整的数据集

Realterm Termite

我已经尝试逐个单元地进行它,但它只有在我请求它们一秒钟时才有效,否则我会遇到同样的问题。

之后我需要使用定时器(100 ms)从PIC请求实时数据。这项工作更好,但有些时候我得到一些随机数据。我暂时没有专注于此,因为没有数据集,其他一切都是无用的。

我错过了什么或有没有人遇到过同样的问题?

答案

我设法通过替换来解决问题

SerialPort1.Read(Buffer_array_received_data, 0, 128)

 For byte_pos As Int16 = 0 To 127 Step 1
     Buffer_array_received_data(byte_pos) = SerialPort1.ReadByte()
    Next

但他们不应该是一样的吗?

以上是关于Visual Studio 2013 SerialPort未接收所有数据的主要内容,如果未能解决你的问题,请参考以下文章

如何设置 TFS 2013 以使用 Visual Studio 2013 或 Visual Studio 2017 构建

如何使用Visual Studio 2013或Visual Studio 2017设置TFS 2013

Visual Studio 2013 Tools for Unity安装目录,Visual Studio 2013 Tools.unitypackage

使用Visual Studio2013打开Visual Studio2015项目

从 Visual Studio 2013 转换到 Visual Studio 2015 的问题

Intel parallel studio 2017 集成在visual studio 2013 中,现在如何集成到visual studio 2015