我真的要疯掉了,如果能帮我解决,我以身相许!

wenchuan40808 2012-07-08 04:57:13
我真的要疯掉了,如果能帮我解决,我以身相许!

serialPort1 发送串口数据
serialPort1.Close();
serialPort1.PortName = "COM1";
serialPort1.DataBits = 8;
serialPort1.BaudRate = 9600;
serialPort1.ReadTimeout = 2000;
serialPort1.StopBits = System.IO.Ports.StopBits.One;

serialPort1.Open();
byte[] data1 = Encoding.Unicode.GetBytes(getHostIpName());
string str = Convert.ToBase64String(data1);
serialPort1.WriteLine(str);
MessageBox.Show("数据发送成功!", "系统提示");


serialPort1 获得串口数据

public partial class Form1 : Form
{

delegate void HandleInterfaceUpdateDelegate(string text); //委托,此为重点
HandleInterfaceUpdateDelegate interfaceUpdateHandle;



public Form1()
{
InitializeComponent();
SerialPort serialPort1 = new SerialPort();
serialPort1.PortName = "COM1";
serialPort1.BaudRate = 9600;
serialPort1.ReadTimeout = 1000; //读超时
serialPort1.StopBits = StopBits.One;
serialPort1.Parity = Parity.Space;

interfaceUpdateHandle = new HandleInterfaceUpdateDelegate(UpdateTextBox); //实例化委托对象
serialPort1.DataReceived += new SerialDataReceivedEventHandler
(serialPort1_DataReceived);//DataReceived事件委托
serialPort1.ReceivedBytesThreshold = 1;
serialPort1.RtsEnable = true;
serialPort1.Open();

}


private void UpdateTextBox(string text)
{
textBox1.Text = text;
}

private void serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e)
{

Thread.Sleep(2000);
byte[] readBuffer = new byte[serialPort1.ReadBufferSize];
serialPort1.Read(readBuffer, 0, readBuffer.Length);
this.Invoke(interfaceUpdateHandle, new string[] { Encoding.UTF8.GetString(readBuffer, 0,
100) });
}


发送数据没有问题,可是接受数据时,serialPort1_DataReceived 有反应,
可这句代码 serialPort1.Read(readBuffer, 0, readBuffer.Length);
他老是提示“端口被关闭。”
我实在不知道为什么,我明明在Form1()初始化中添加了这句代码啊 serialPort1.Open();

在线求大师!
...全文
660 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
Saleayas 2012-07-09
  • 打赏
  • 举报
回复
先尝试把 SerialPort 定义到类实例中,而不是在构造函数中。
SerialPort serialPort1 = new SerialPort();
mayudong1 2012-07-09
  • 打赏
  • 举报
回复
serialPort1.ReadTimeout = 1000; //读超时

Thread.Sleep(2000);


不知道跟这里有没有关系
nvshenxp 2012-07-09
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 的回复:]
serialPort1.PortName = "COM1";
serialPort1.BaudRate = 9600;
serialPort1.ReadTimeout = 1000; //读超时 serialPort1.StopBits = StopBits.One;
serialPort1.Pari……
[/Quote]
我觉得可能是这句的问题。。。改大点试试呢。
KING_314 2012-07-09
  • 打赏
  • 举报
回复
可以用AccessPort或 BusHound监控串口操作及数据
KING_314 2012-07-09
  • 打赏
  • 举报
回复
 //添加事件注册
serialPort1.DataReceived.DataReceived += serialPort1_DataReceived;

wenchuan40808 2012-07-08
  • 打赏
  • 举报
回复
现在就是发送可以 但是接收不行

两台电脑的配置都是这样子的
serialPort1.PortName = "COM1";
serialPort1.BaudRate = 9600;
serialPort1.ReadTimeout = 1000; //读超时
serialPort1.StopBits = StopBits.One;
serialPort1.Parity = Parity.Space;
mizuho_2006 2012-07-08
  • 打赏
  • 举报
回复
没有提示被占用,能正常取到串口数据吗。
如果不能是不是端口配置错了
wenchuan40808 2012-07-08
  • 打赏
  • 举报
回复
可以用超级终端试一下,如果超级终端提示串口已占用就是被占用了。


我试了一下 超级终端没有提示,那说明没有被占用啊


我实在搞不懂了!
saturn4263195 2012-07-08
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 的回复:]

可能是com1口的中断被占用了,在开始——程序——附件——系统工具——系统信息中你看一下吧

老大怎么看啊?
[/Quote]
不用你以身相许,上张照片,哥教你.
mizuho_2006 2012-07-08
  • 打赏
  • 举报
回复
可以用超级终端试一下,如果超级终端提示串口已占用就是被占用了。
暖枫无敌 2012-07-08
  • 打赏
  • 举报
回复
开始——程序——附件——系统工具——系统信息-----组件-----端口

你仔细检查一下吧
wenchuan40808 2012-07-08
  • 打赏
  • 举报
回复
可能是com1口的中断被占用了,在开始——程序——附件——系统工具——系统信息中你看一下吧

老大怎么看啊?
saturn4263195 2012-07-08
  • 打赏
  • 举报
回复
我以前看到 资源里面有 C#的串口调式代码,你搜索一下 关键字 串口 or rs232 rs485什么的...
暖枫无敌 2012-07-08
  • 打赏
  • 举报
回复
可能是com1口的中断被占用了,在开始——程序——附件——系统工具——系统信息中你看一下吧
saturn4263195 2012-07-08
  • 打赏
  • 举报
回复
1是楼上说的,com口被其他程序占用了;
2是排除一下硬件 驱动什么的 故障 因素
3是检查 连接com口的设备
wenchuan40808 2012-07-08
  • 打赏
  • 举报
回复
各位老大 我是用RS232线将两台主机相连的哦 一个发送数据 一个接收数据
mizuho_2006 2012-07-08
  • 打赏
  • 举报
回复
端口被别的程序占用了吧
wenchuan40808 2012-07-08
  • 打赏
  • 举报
回复
没有啊 老大 绝对没有啊 我确认了 好多遍了
老大 你能加我QQ:506745403 急需你的帮助啊
我实在搞不懂啊
暖枫无敌 2012-07-08
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]

谢谢 两位大神
按照你们的方法 ,现在弹出如下错误啊
对端口“COM1”的访问被拒绝。
[/Quote]
那就是你机器的COM1端口是不是被禁用了啊,检查一下
wenchuan40808 2012-07-08
  • 打赏
  • 举报
回复
谢谢 两位大神
按照你们的方法 ,现在弹出如下错误啊
对端口“COM1”的访问被拒绝。
加载更多回复(2)

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧