C#中多窗体访问serialport

lm溪 2014-08-15 09:43:38
我现在需要在form2中向form1中的serialport中写入数据,即调用form1中serialport的write()方法,在form2中的语句如下:

AutoControl140812.Form1.serialPort1.Write(send1); //AutoControl140812为项目名


但是报错 “非静态的字段、方法或属性“AutoControl140812.Form1.serialPort1”要求对象引用”,我把serialport1的属性改为public还是报这个错,怎么把serialport1改为静态的啊,各位大虾们帮帮忙啊!
...全文
299 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
lm溪 2014-08-17
  • 打赏
  • 举报
回复
引用 5 楼 caozhy 的回复:
将SerialPort定义为static public Form1 f1 = new Form1();去掉 f1.serialPort1.Write(send); -> Form1.serialPort1.Write(send);
你的意思是动态定义serialport吗,那DataReceived事件要怎么定义,看网上是这样写的: serialPort1.DataReceived += new SerialDataReceivedEventHandler(serialPort1_DataReceived); 这句话要写在哪个地方,为什么我加上去后运行,串口接收数据丢包很严重,很多都接收不到,问题在哪,谢谢你了!
lm溪 2014-08-16
  • 打赏
  • 举报
回复
引用 3 楼 caozhy 的回复:
将SerialPort定义为static public才行。
我在form2中这样写可以了: Form1 f1 = new Form1(); f1.serialPort1.Write(send); 但是运行时候报错:端口被关闭 是不是两个窗体同时用一个串口会冲突啊?
threenewbee 2014-08-16
  • 打赏
  • 举报
回复
将SerialPort定义为static public Form1 f1 = new Form1();去掉 f1.serialPort1.Write(send); -> Form1.serialPort1.Write(send);
threenewbee 2014-08-15
  • 打赏
  • 举报
回复
将SerialPort定义为static public才行。
wireboy 2014-08-15
  • 打赏
  • 举报
回复
因为你的Form2没有得到Form1的句柄所以不行 在Form1中打开Form2的时候将Form1的句柄传给Form2 在Form2中就能直接调用Form1中声明为public的函数了
jointan 2014-08-15
  • 打赏
  • 举报
回复
用最让人垢病的的生产者,消费者模式

111,096

社区成员

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

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

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