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%)它只显示数据集的一部分并且到最后显示零,当我再次尝试时它显示另一部分并从头开始。
如果我尝试与另一个程序相同的东西,我总是得到完整的数据集
我已经尝试逐个单元地进行它,但它只有在我请求它们一秒钟时才有效,否则我会遇到同样的问题。
之后我需要使用定时器(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