自己用C#编了一个串口接收程序接收单片机传回的数据,为什么不能接受RS232转USB传回的数据。

电脑已经安装USB转串口驱动,而且用串口调试助手能正常接收。

如果确认 串口号, 波特率, 位数, 奇偶校验 设置都正确 可以考虑是不是设备有问题 我以前就遇到过一次,串口调试器可以正确接收 而c# 里面的serialport 接收不正常 最后发现是设备的问题
温馨提示:内容为网友见解,仅供参考
第1个回答  2012-08-29
检查一下你的软件中串口号, 波特率, 位数, 奇偶校验这些有没有设置正确追问

设置都是正确的,而且拿另一块本身有RS232转USB功能的单片机,接收完全正常

rs232转usb接口 C# VS2010 编写上位机取数据处理后显示??取数问题...
如果在你笔记本(即上位机)上用的是USB 232,也就是利用USB插口模拟出一个标准的RS232口,在你上位机的程序中就使用SerialPort来收发数据。因为下位机(数据采集前端设备,比如单片机系统)一般只能通过UTAR串行通信,向上位机发送数据。如果下位机(如某些ARM系统)是利用USB传输数据,那你的上位机开发...

C#实现485串口通讯无法接收到单片机返回的数据
你的接收方式就是错的。接收的时候,要是完整的一帧,不能用循环;接收前,开辟一个足够大的缓存区,当有数据到来时,一次性接收;接收后的数据,做分析,读出有用的信息。

C#如何实现对单片机的USB通信?
1、自己写一个c++的USB代理类,直接和底层驱动通信 2、C#通过这个来调用 单片机只是一块芯片,需要基本电路及相应外围设备。仿真可以用proteus,编程可以用Keil,调试用串口助手。单片机可以通过RS232转串口和电脑通信(还需要RS232驱动)。或者 1、买一个USB到RS232串口转换接口 2、单片机加一个TTL到RS23...

如何用C#编写RS232通过单片机串口之间的通信
通常,在C#中实现串口通信,我们有四种方法: 第一:通过MSCOMM控件这是最简单的,最方便的方法。可功能上很难做到控制自如,同时这个控件并不是系统本身所带,所以还得注册。可以访问 http:\/\/www.devhood.com\/tutorials\/tutorial_details.aspx?tutorial_id=320 一个外国人写的教程 第二:微软在.NET...

如何制造简单的遥控器和遥控接收器?
1、由于接收到的红外信号在微秒级别中变化,对系统实时性要求较高,所以具备垃圾回收功能,实时性没有保证的C#,似乎完不成这种信号的接收功能,所以我们选择的是VC,由它实现高优先级的线程去进行信号接收。2、由于红外遥控信号是脉宽调制的串行码,所以我们需要采集信号的宽度,显然采用一般的时钟函数来...

如何用C#的serialport类接收单片机发送的数据
\/\/\/ <returns><\/returns> private string Read(){ \/\/获得返回数据 string Return = "";string ShowReturn = ""; \/\/显示的命令 try { Thread.Sleep(100);int len = this.serialPort1.BytesToRead;if (len > 0){ byte[] data = new byte[len];if (len > 0){ for (int i = 0;...

C#.net编程程序与单片机连接,怎样实现呢?
C#.net有串口的控件SerialPort,通过对控件的读写,就可以与单片机通讯了;不能通讯的情况是很多的:1、上位机和单片机的串口波特率等设置是不是一致,单片机串口能正常接收吗?2、上位机和单片机的硬件是不是完好的 3、你单片机的程序是怎么写的,采用什么形式接收的??字符串还是十六进制?4、你上位...

如何用C#的serialport类接收单片机发送的数据
\/\/\/ <returns><\/returns> private string Read(){ \/\/获得返回数据 string Return = "";string ShowReturn = ""; \/\/显示的命令 try { Thread.Sleep(100);int len = this.serialPort1.BytesToRead;if (len > 0){ byte[] data = new byte[len];if (len > 0){ for (int i = 0;...

用C#写串口通信程序遇到关于波特率设置的问题,详细描述见补充_百度知 ...
然后用下位机向串口助手之类的软件发同样的数据,也显示为十六进制,对比一下问题出在哪(如果要方便调试,可以先用下位机向串口助手发送数据,发完后把十六进制复制一下,然后用串口助手发这些十六进制数据给你自己的程序),按你描述的情况来看,可能是对还没接收完全的数据进行了转换以至出错。

C# 串口通信,serialport里的数据只读了一部分。
告诉你 下位机发过来的串口数据并不一定是一次全部能收到的,要知道电脑的总线速度远高于普通单片机和arm。所以很多仪器才设有握手协议,在数据头尾设有标记。就是为了解决电脑和下位机的同步问题。一般来说判断从下位机接收数据的方式要么是根据超时判断数据接收完结,要么是根据接收到头尾标记。所以程序...

相似回答