C#和232串口通信方法(SerialPort控件)(5)

2019-01-26 14:30

在工程的主对话框头文件中,格式如下:

afx_msg LONG OnComm(WPARAM ch,LPARAM port);

在工程的主对话框的CPP文件中,格式如下:

BEGIN_MESSAGE_MAP(CMy20040889SerialPortTestDlg, CDialog)

//{{AFX_MSG_MAP(CMy20040889SerialPortTestDlg)

ON_MESSAGE(WM_COMM_RXCHAR,OnComm) ...

//}}AFX_MSG_MAP

END_MESSAGE_MAP()

然后在CPP中添加消息处理函数,本例中为OnComm。 例如:

LONG CTestDlg::OnComm(WPARAM ch, LPARAM port) {

m_strEditReceiveMsg += ch;

UpdateData(FALSE); return 0; }

//m_strEditReceiveMsg 为EDIT控件(接收框)的变量。

//下面的m_strEditSendMsg同样处理。

3.实现串口的初始化,打开/关闭串口按钮的响应函数,最后是发送信息按钮的函数实现。

void CTestDlg::OnButtonOpen() { int nPort=m_ctrlComboComPort.GetCurSel()+1;

if(m_SerialPort.InitPort(this, nPort, 9600,'N',8,1,EV_RXFLAG | EV_RXCHAR,512)) {

m_SerialPort.StartMonitoring();

m_bSerialPortOpened=TRUE; } else {

AfxMessageBox(\没有发现此串口或被占用\

m_bSerialPortOpened=FALSE; }

GetDlgItem(IDC_BUTTON_OPEN)->EnableWindow(!m_bSerialPortOpened);

GetDlgItem(IDC_BUTTON_CLOSE)->EnableWindow(m_bSerialPortOpened); }

void CTestDlg::OnButtonClose() {

m_SerialPort.ClosePort();

m_bSerialPortOpened=FALSE;

GetDlgItem(IDC_BUTTON_OPEN)->EnableWindow(!m_bSerialPortOpened);

GetDlgItem(IDC_BUTTON_CLOSE)->EnableWindow(m_bSerialPortOpened); }

void CTestDlg::OnButtonSend() {

if(!m_bSerialPortOpened) return; UpdateData(TRUE); //读入编辑框中的数据

m_SerialPort.WriteToPort((LPCTSTR)m_strEditSendMsg);//发送数据 }

传感器(c#2.0)serialPort串口通讯 2007年10月12日 星期五 15:44 using System;

using System.Collections.Generic; using System.ComponentModel; using System.Data;

using System.Data.SqlClient; using System.Drawing; using System.Text;

using System.Windows.Forms; using System.Configuration; using System.IO;

using System.IO.Ports;

namespace WindowsApplication2 {

public partial class Form1 : Form {

public Form1() {

InitializeComponent(); }

int iCount; int numbers; byte rlenth; bool bRLenth; int bRStart; bool bRParam; byte Rchk; int LParam; byte[] RParam; bool brcmd; byte RCmd; bool bRchk; bool bfinish;

private void Form1_Load(object sender, EventArgs e) {

//Form1 Form1 = new Form1(); try {

if (this.serialPort1.IsOpen) {

serialPort1.Close(); } else {

serialPort1.PortName = \//选择串口COM1

serialPort1.BaudRate = 9600; //设置通信口参数

serialPort1.DataBits = 8; //数据位

serialPort1.Parity = System.IO.Ports.Parity.None;//校验位 无校验

serialPort1.StopBits = System.IO.Ports.StopBits.One;//停止位1位

serialPort1.ReadBufferSize = 1024; //接收缓冲区大小

serialPort1.WriteBufferSize = 1024; //发送缓冲区大小 serialPort1.Open();

serialPort1.ReadExisting(); //设置Input从接收缓冲读取全部数据

serialPort1.ReceivedBytesThreshold = 1; //设置引发OnComm事件的字节长度

serialPort1.DiscardInBuffer() ; //清除接收缓冲区

serialPort1.DiscardOutBuffer() ; //清除发送缓冲区

}

string connstr =

System.Configuration.ConfigurationManager.AppSettings[\ring\

SqlConnection conn = new SqlConnection(connstr);

时间,price,card from test01\ SqlDataAdapter(sql, conn);

conn.Open();

string sql = \ name as SqlDataAdapter da = new DataSet ds = new DataSet(); da.Fill(ds, \

ultraChart1.DataSource = ds.Tables[0].DefaultView;

dataGridView1.DataSource = ds.Tables[0].DefaultView;

ultraChart1.Axis.Y.LogBase = 1000; ultraChart1.Axis.Y.RangeMax = 30000; ultraChart1.Axis.Y.RangeMin = 0; Application.EnableVisualStyles(); Application.DoEvents(); }

catch (Exception ex) {

MessageBox.Show(\ageBoxButtons.OK,MessageBoxIcon.Error); }

//ultraChart1.

}

///

/// 取前后存储器两个值对比,应付电脑异常退出 ///

/// ///

private void serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e) { try {

//Byte[] dataread = new Byte[8] ;

//serialPort1.Read(dataread, 0, dataread.Length);

//int productline=dataread[0]; //接口号


C#和232串口通信方法(SerialPort控件)(5).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:2011届高考生物果蝇实验专题专项训练3

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: