关于serialport 串口通信问题

问题描述

这是我的源代码,参考的网上的程序:但是可以成功发送数据,但是不能接收到数据(使用串口模拟软件可以显示接收到数据,但是是乱码),大家帮忙看下,感谢!代码:usingSystem;usingSystem.Collections.Generic;usingSystem.ComponentModel;usingSystem.Data;usingSystem.Drawing;usingSystem.Linq;usingSystem.Text;usingSystem.Threading.Tasks;usingSystem.Windows.Forms;usingSystem.IO.Ports;namespaceCsharp串口通信2{publicpartialclassForm1:Form{publicForm1(){InitializeComponent();}SerialPortserialPort1=newSerialPort();privatevoidSend_Click(objectsender,EventArgse){serialPort1.PortName="COM1";serialPort1.BaudRate=9600;serialPort1.Open();byte[]data=Encoding.Unicode.GetBytes(textBox1.Text);stringstr=Convert.ToBase64String(data);serialPort1.WriteLine(str);MessageBox.Show("数据发送成功!","系统提示");}privatevoidReceive_Click(objectsender,EventArgse){byte[]data=Convert.FromBase64String(serialPort1.ReadLine());textBox2.Text=Encoding.Unicode.GetString(data);serialPort1.Close();MessageBox.Show("数据接收成功!","系统提示");}}}

解决方案

解决方案二:
先弄清楚读取的数据是什么格式的
解决方案三:
serialPort1.ReadLine()需要读取到换行(换行是rn或n在于你的设定),你读取到的信息有这样的结尾吗
解决方案四:
串口操作有二进制模式和文本模式,serialport有个属性设置一下,再试试
解决方案五:
跟端口号和波特率有关系吧
解决方案六:
无规律带中文的乱码一般是数据线坏了,其他有规律的码,一般是接收到的byte没有使用适当的编码转成字符串
解决方案七:
估计你是用虚拟串口软件测试的,那么我们就要问一下了,你虚拟软件怎么配置的,那个是发送端口,那个是接收端口
解决方案八:
也就是说,你是给com1发了,不过谁接收呢?总不会是com1自己发给自己吧所以如果是虚拟串口软件,他都成对配置的一个com3发,另一个com4接(反之一样)另外所谓的乱码,就看你怎么看了,如果你认为显示成二进制FF01这样就是乱码,我们就没办法了,如果显示的是文本模式他不是你认为的东西,那就是波特率有问题
解决方案九:
串口数据的接收需要在确定的波特率下,一般是按byte读取的,然后再按照协议结构来分解。
解决方案十:
引用6楼wanghui0380的回复:

估计你是用虚拟串口软件测试的,那么我们就要问一下了,你虚拟软件怎么配置的,那个是发送端口,那个是接收端口

我是COM1发送,COM2接收的
解决方案十一:
引用7楼wanghui0380的回复:

也就是说,你是给com1发了,不过谁接收呢?总不会是com1自己发给自己吧所以如果是虚拟串口软件,他都成对配置的一个com3发,另一个com4接(反之一样)另外所谓的乱码,就看你怎么看了,如果你认为显示成二进制FF01这样就是乱码,我们就没办法了,如果显示的是文本模式他不是你认为的东西,那就是波特率有问题

COM1发送消息,COM2接收消息的,这是网上找的代码,不明白为什么接收不到数据
解决方案十二:
你这个功能是从com1口发送数据然后读取返回到com1口的数据和com2口没有关系。

时间: 2024-10-26 16:21:34

关于serialport 串口通信问题的相关文章

c# 串口通信 线程-C# SerialPort 串口通信多线程问题

问题描述 C# SerialPort 串口通信多线程问题 编程新手,想C# SerialPort实现串口通信,写的程序大概这样一个结构.发送一个数据后,要求收到下位机回复,超时发送下一个数据.要加一个发送和接收的线程,是加在主程序里面吗?大体的结构应该是怎么样的?求大神帮助!O(∩_∩)O谢谢! class SendAndReceive { SerialPort sp = new SerialPort(); public void SearchSet()//检测有哪些端口 public void

C# serialPort 串口连接modem通信 64位系统不能通信

问题描述 C# serialPort 串口连接modem通信 64位系统不能通信 C# serialPort 串口连接modem通信,在32位系统是能正常通信,当发布 64位系统不能通信了?请大牛啊!! 解决方案 要是串口能打开就说明能正常通信,能打开则是其他原因,要是不能先检查64位系统上驱动. 解决方案二: 看看驱动,因为32bit和64bit,软件是通用的,但是驱动不行. 解决方案三: 把程序编译成x86,不要用anycpu试试

mfc-MFC用serialport写的串口通信助手,接收的是一个字节?

问题描述 MFC用serialport写的串口通信助手,接收的是一个字节? 接收数据的处理函数OnCommunication(WPARAM ch,LPARAM port),WPARAM ch接受的是一个字节吗,如果是,怎么能变成两个字节呢,拜托大神解答下,求代码,急急急 解决方案 不是,是缓冲区中所有的数据. 解决方案二: ch指向这个数据的首地址.http://wenku.baidu.com/link?url=P94cAhiJrnGH1ShHNnSAiGFU7MqUuQWHvuFP6WRxhN

C#串口通信 serialport类

问题描述 有个C#的问题想请教,在线等!!我用C#中的serialport类做一个串口通信,遇到个问题,我查看了资料"通过调用一次serialport类中的Read()方法并不能确保所读取的数据就是完整一桢",我现在就遇到这个问题,我用Read()方法只能得到我数据的前9个字节,后面的数据得不到,百思不得其解,望赐教!Byte[]BSendTemp={0x00,0xff,0xff,0xcc,0x01,0x01,0x02,0x40,0x00,0x44};//建立临时字节数组对象seria

.NET Compact Framework下的串口通信

在Wince和Windows Mobile下,很多设备以串口(Serial Port/Com Port)的方式提供访问接口,例如 可以通过串口访问GPS的receiver,从而接收NMEA Data. 在CF.NET2.0开始,MS把串口操作封装了到System.IO.Ports.SerialPort里面,大大简便了对串口的操 作,不再需要P/Invoke就可以直接操作串口. 下面展现两个串口通信类,一个负责发生,一个负责接收,两个类分别在不要的设备上运行. public class Recei

c++串口通信初始化不成功

问题描述 c++串口通信初始化不成功 #include "stdafx.h" #include "SerialPort.h" #include using namespace std; int main(int argc, char* argv[]) { CSerialPort mySerialPort; if (!mySerialPort.InitPort(2)) { cout << "initport fail !" <&l

.NET 串口通信

原文:.NET 串口通信 这段时间做了一个和硬件设备通信的小项目,涉及到扫描头.输送线.称重机.贴标机等硬件.和各设备之间通信使用的是串口或网络(Socket)的方式.扫描头和贴标机使用的网络通信,输送线和称重机使用的是串口通信. 串口通信,以前一直觉得神秘,没想到用起来却这么简单.当然,这样简单要归功于 .NET 对其操作的封装. .NET 里提供了专门操作串口的类 System.IO.Ports.SerialPort,可以操作串口收发数据.只需要 new 一个对象,简单配置一下相关属性,就可

Win10 IoT C#开发 4 - UART 串口通信

原文:Win10 IoT C#开发 4 - UART 串口通信 Windows 10 IoT Core 是微软针对物联网市场的一个重要产品,既可以开发设备UI与用户交互式操作,又可以控制GPIO等接口,使得原来嵌入式繁琐的开发变得简单.通过Remote Debug功能可以进行断点追踪调试.C#语言本身也有很好的用户基础,相信Win10 IoT 不远的将来会火起来.上个月帮朋友解决了关于Win10 IoT 的一些技术问题,当前也有很多公司在尝试采用Win10 IoT进行开发,可能也会遇到这些问题,

java串口通信

java串口通信API说明 java串口通信 2008/09/22 20:24 java串口通信API说明 java串口通信    Java提供了 CommunicationAPI(包含于javax.comm包中)用于通过与机器无关的方式,控制各种外部设备.Communications API,是标准的Java的扩展部分,它在JavaAPI中是没有附带的.因此,必须先在SUN公司网站的Java站点(www.java.sun.com)上下载这个扩展类库. 1.1Communications API