串口设置问题

问题描述

我想利用委托,在form2中设置form1的串口,可是发现实现不了,本人菜鸟,求大神指点啊!!!!http://yunpan.cn/c3Wz6M3Merm5N访问密码5308这个是我写的form1中的代码,namespaceWindowsFormsApplication1{publicpartialclassForm1:Form{privateSerialPortscanRS232SP=newSerialPort("COM1",9600,Parity.None,8,StopBits.One);privateSerialPortmoduleRS232P=newSerialPort("COM2",9600,Parity.None,8,StopBits.One);publicForm1(){InitializeComponent();}privatevoidForm1_Load(objectsender,EventArgse){}privatevoidbutton1_Click(objectsender,EventArgse){setSerialPorts=newForm2();setSerialPorts.ShowDialog();setSerialPorts.setSPInvoke=UpdateSerialPorts;}publicForm2setSerialPorts;publicvoidUpdateSerialPorts(stringscanportname,intscanbaudrate,intscandatabits,Parityscanparity,StopBitsscanstopbit,stringmoduleportname,intmodulebaudrate,intmoduledatabits,Paritymoduleparity,StopBitsmodulestopbit){scanRS232SP.PortName=scanportname;scanRS232SP.BaudRate=scanbaudrate;scanRS232SP.DataBits=scandatabits;scanRS232SP.Parity=scanparity;scanRS232SP.StopBits=scanstopbit;moduleRS232P.PortName=moduleportname;moduleRS232P.BaudRate=modulebaudrate;moduleRS232P.DataBits=moduledatabits;moduleRS232P.Parity=moduleparity;moduleRS232P.StopBits=modulestopbit;}}}

下面是form2的,求指点:usingSystem;usingSystem.Collections.Generic;usingSystem.ComponentModel;usingSystem.Data;usingSystem.Drawing;usingSystem.Linq;usingSystem.Text;usingSystem.Threading.Tasks;usingSystem.Windows.Forms;usingSystem.IO.Ports;usingWindowsFormsApplication1.Properties;namespaceWindowsFormsApplication1{publicpartialclassForm2:Form{publicForm2(){InitializeComponent();InitializeControlValues();}privatevoidForm2_Load(objectsender,EventArgse){}publicdelegatevoidSetSPInvoke(stringscanportname,intscanbaudrate,intscandatabits,Parityscanparity,StopBitsscanstopbit,stringmoduleportname,intmodulebaudrate,intmoduledatabits,Paritymoduleparity,StopBitsmodulestopbit);publicSetSPInvokesetSPInvoke;privatevoidbutton1_Click(objectsender,EventArgse){setSPInvoke(Settings.Default.ScanPortName,Settings.Default.ScanBaudRate,Settings.Default.ScanDataBits,Settings.Default.ScanParityBit,Settings.Default.ScanStopBit,Settings.Default.ModulePortName,Settings.Default.ModuleBaudRate,Settings.Default.ModuleDataBits,Settings.Default.ModuleParityBit,Settings.Default.ModuleStopBit);}privatevoidSaveSettings(){Settings.Default.ScanBaudRate=int.Parse(cbScanBaudRate.Text);Settings.Default.ScanDataBits=int.Parse(cbScanDataBits.Text);Settings.Default.ScanParityBit=(Parity)Enum.Parse(typeof(Parity),cbScanParityBit.Text);Settings.Default.ScanStopBit=(StopBits)Enum.Parse(typeof(StopBits),cbScanStopBit.Text);Settings.Default.ScanPortName=cbScanPortName.Text;Settings.Default.ModuleBaudRate=int.Parse(cbModuleBaudRate.Text);Settings.Default.ModuleDataBits=int.Parse(cbModuleDataBits.Text);Settings.Default.ModuleParityBit=(Parity)Enum.Parse(typeof(Parity),cbModuleParityBit.Text);Settings.Default.ModuleStopBit=(StopBits)Enum.Parse(typeof(StopBits),cbModuleStopBit.Text);Settings.Default.ModulePortName=cbModulePortName.Text;Settings.Default.Save();MessageBox.Show("COM口配置成功!","正确",MessageBoxButtons.OK,MessageBoxIcon.None);}privatevoidInitializeControlValues(){cbScanParityBit.Items.Clear();cbScanParityBit.Items.AddRange(Enum.GetNames(typeof(Parity)));cbScanStopBit.Items.Clear();cbScanStopBit.Items.AddRange(Enum.GetNames(typeof(StopBits)));cbScanParityBit.Text=Settings.Default.ScanParityBit.ToString();cbScanStopBit.Text=Settings.Default.ScanStopBit.ToString();cbScanDataBits.Text=Settings.Default.ScanDataBits.ToString();cbScanBaudRate.Text=Settings.Default.ScanBaudRate.ToString();cbScanPortName.Text=Settings.Default.ScanPortName.ToString();cbScanPortName.Items.Clear();foreach(stringsinSerialPort.GetPortNames())cbScanPortName.Items.Add(s);if(cbScanPortName.Items.Contains(Settings.Default.ScanPortName))cbScanPortName.Text=Settings.Default.ScanPortName;elseif(cbScanPortName.Items.Count>0)cbScanPortName.SelectedIndex=0;//if(cbScanPortName.Items.Contains(Settings.Default.ScanPortName))//cbScanPortName.Text=Settings.Default.ScanPortName;//elseif(cbScanPortName.Items.Count>0)cbScanPortName.SelectedIndex=0;//else//{//MessageBox.Show(this,"没有发现通讯设备,请安装通讯设备","无通讯设备连接",MessageBoxButtons.OK,MessageBoxIcon.Error);//this.Close();//}cbModuleParityBit.Items.Clear();cbModuleParityBit.Items.AddRange(Enum.GetNames(typeof(Parity)));cbModuleStopBit.Items.Clear();cbModuleStopBit.Items.AddRange(Enum.GetNames(typeof(StopBits)));cbModuleParityBit.Text=Settings.Default.ModuleParityBit.ToString();cbModuleStopBit.Text=Settings.Default.ModuleStopBit.ToString();cbModuleDataBits.Text=Settings.Default.ModuleDataBits.ToString();cbModuleBaudRate.Text=Settings.Default.ModuleBaudRate.ToString();cbModulePortName.Items.Clear();foreach(stringsinSerialPort.GetPortNames())cbModulePortName.Items.Add(s);if(cbModulePortName.Items.Contains(Settings.Default.ModulePortName))cbModulePortName.Text=Settings.Default.ModulePortName;elseif(cbModulePortName.Items.Count>0)cbModulePortName.SelectedIndex=0;//if(cbModulePortName.Items.Contains(Settings.Default.ModulePortName))cbModulePortName.Text=Settings.Default.ModulePortName;//elseif(cbModulePortName.Items.Count>0)cbModulePortName.SelectedIndex=0;//else//{//MessageBox.Show(this,"没有发现通讯设备,请安装通讯设备","无通讯设备",MessageBoxButtons.OK,MessageBoxIcon.Error);//this.Close();//}}}}

解决方案

时间: 2024-10-29 06:19:46

串口设置问题的相关文章

stm32-STM32F4DISCOVERY串口设置问题

问题描述 STM32F4DISCOVERY串口设置问题 如题,这个板子的串口怎么打开 是把usb连接到电脑就可以还是要另外配置什么啊 我的板子连接到了电脑也可以下载程序,设备管理器里也显示正确安装,可是串口调试助手里面就是没有啊 请问该怎么做啊 解决方案 肯定需要另外配置文件才可以使用类似于usb转串口,给你个个网址参考下http://www.openedv.com/posts/list/28005.htm

串口通信-vc++串口上位机串口设置

问题描述 vc++串口上位机串口设置 串口打开时,选择了一个无效的串口号后,怎么令串口按钮关闭.如图 图1是串口正常打开,图二是选择无效端口号后串口按钮的变化(串口关闭).请问是如何实现的?非常感谢! 解决方案 http://zhidao.baidu.com/link?url=YPewInrq7LneRthad_AJ1OgGmTZuMhRNayv0Pkq5v4mHdy3ZOKlax3q22fEhBTLC8kgrK-Zo8oIk5irlqdsaWK 解决方案二: VC++ .net 串口操作(简单

vc++可以帮忙一个串口设置的变成吗?

问题描述 vc++可以帮忙一个串口设置的变成吗? vc++可以帮忙一个串口设置的变成吗? 因为上位机基本的功能已经实现了 但是需要加上串口设置 解决方案 上位机功能已经实现,那么 PC 上的串口之需要配置成与上位机一样的串口参数即可 串口号是 PC 上的物理串口驱动对应的,其它参数如:校验位.校验方式.波特率等 需要配置成与上位机一样的. 解决方案二: 无非就是串口号.校验位.校验方式.波特率,做一个界面给用户设置就是了.

嵌入式linux串口设置(一)

在linux中,所有的设备文件一般都位于"/dev"下,串口1和串口2对应的设备名依次为"/dev/ttyS0", "/dev/ttyS1",而且USB转串口的设备名通常为"/dev/ttyUSB0",在linux下对设备的操作方法与对文件的操作方法一样. 串口开发步骤: 串口的设置主要是设置struct termios结构体的各成员值 #include<termios> struct termios {     

linux下串口编程设置函数---------set_opt(fd1,115200,8,&amp;#39;N&amp;#39;1)--------------------

open /dev/ttys0, 设备文件之后,得到文件描述符, 对串口进行设置. /** *串口设置函数:例(fd1, 115200, 8, 'N', 1); *参数: *fd:串口设备节点 *nSpeed:波特率 *nBits:数据位 *nEvent:校验位 *nStop:停止位 *返回值:成功 -- 0 * 失败 -- -1 */ int set_opt(int fd,int nSpeed, int nBits, char nEvent, int nStop) { struct termi

linux 串口阻塞与非阻塞参数设置

在串口设置中,有以下两个参数可以决定是否阻塞. 在打开串口时不加O_NODELAY,可用下面的第二种方法,来进行阻塞/非阻塞的设定  c_cc[VTIME] 非规范模式读取时的超时时间(单位:百毫秒),可以这么理解,从接收到后一个字节开始计时,如果超时,则退出READ  c_cc[VMIN]  非规范模式读取时的最小字符数,设为0则为非阻塞,如果设为其它值则阻塞,直到读到到对应的数据 关键代码  iFd = open(cSerialName, O_RDWR | O_NOCTTY);       

VB串口使用心得两则

心得 最近本人,使用VB串口编程,得到心得两则,拿来和大家共享, 如果对则,褒奖本人两句,如果不对,则欢迎大虾指教. 心得1:串口的输出属性: 按照书上或是MSDN中给出OUTPUT的数据类型是字符串或VARIANT类型,我出现的问题是我想传送0至255之间的数,可是按照,以上的输出数据类型进行设置的化,传输不了诸如200,210等大于125的数,我又不想按照帖子上介绍的文章进行转换,于是有了一点心得: 将给OUTPUT的变量的数据类型设置为BYTE的数组,数组元素的个数为1即可.  Dim S

builder-麻烦大家帮我详细解释下下面这段与串口交互的代码,谢谢!

问题描述 麻烦大家帮我详细解释下下面这段与串口交互的代码,谢谢! void __fastcall TfrmPatient::edtDosageDblClick(TObject *Sender) { //read comm data,then set in edtDosage edit //open com port HANDLE hCom = CreateFile(g_ConfigManager.sComPort.c_str(),GENERIC_WRITE,0,NULL,OPEN_EXISTIN

linux编程-linux串口通信问题,急急急!!!

问题描述 linux串口通信问题,急急急!!! 我在开发板上qt程序,开发板跟PC机的虚拟机通过USB转串口线连接,上面运行的是Ubuntu12.04系统,我在PC上发送字符串,然后在开发板上接收,接收的数据单个单个字符接收,为什么不是一整个字符串接收呢?并且接收不到第一个字符,而且差不多接收10秒之后就不在接收数据了!!!!.请各位大神赐教!!! int fd,num,rtn; struct termios options; fd = open("/dev/ttyUSB0", O_R