C# serialport内datareceived事件接收串口数据,详细步骤。

C# serialport内datareceived事件接收串口数据,详细步骤。,第1张

//Threadsleep(1000);//处理事件这块可以加上延时确保不定数的数据可以全部收到缓冲后,才去读缓冲内容--单位:毫秒

byte[] data = new byte[serialPort1BytesToRead]; //定义缓冲区,因为串口事件触发时有可能收到不止一个字节

serialPort1Read(data, 0, dataLength);//读取指定长度

foreach (byte Member in data) //遍历用法

{

string str = ConvertToString(Member, 16)ToUpper();

textBox1AppendText("0x" + (strLength == 1 "0" + str : str) + " ");

}

读取有的string InputData = serialPort1ReadExisting();

单字节读取(当波特率高时就会丢失数据)

byte DataReceived = (byte)(serialPort1ReadByte());                   

扩展资料:

衡量通信中实际数据位的参数。当计算机发送一个信息包,实际的数据往往不会是8位的,标准的值是6、7和8位。如何设置取决于你想传送的信息。比如,标准的ASCII码是0~127(7位)。扩展的ASCII码是0~255(8位)。

如果数据使用简单的文本(标准 ASCII码),那么每个数据包使用7位数据。每个包是指一个字节,包括开始/停止位,数据位和奇偶校验位。由于实际数据位取决于通信协议的选取,术语“包”指任何通信的情况。

参考资料来源:百度百科-串口通信

曲线救国吧~呵呵

思路: stm32 通过串口向电脑发送数据, VB程序接收,

提供如下程序: VB 接收串口数据,写入 mdb 数据库, 然后access 就可以访问数据了

Testmdb 数据库有 tb表,一个字段:ID1,字段类型为数字 双精度,小数位数0

如果程序中data用string的话,就用文本。

Imports SystemDataOleDb

Public Class Form4

    'ApplicationStartupPath:程序启动目录,带密码

    Dim CONNECTION_STRING As String = "Provider=MicrosoftJetOLEDB40; Data Source=" & ApplicationStartupPath & "\Testmdb;Jet OLEDB:Database Password=admin"

    '或者写出实际的数据库文件地址,无密码的:="Provider=MicrosoftJetOLEDB40; Data Source=D:\Testmdb"

    Dim MyConnection As New OleDbConnection(CONNECTION_STRING) '实例化连接对象

    Dim MyCommand As OleDbCommand

    Dim SQLString As String

    Private Sub Form4_Load(ByVal sender As SystemObject, ByVal e As SystemEventArgs) Handles MyBaseLoad

        'Int64最大值为 9,223,372,036,854,775,807;即十六进制的 0x7FFFFFFFFFFFFFFF

        '可以保存15位数据

        Dim data As Int64 = 123456789012345

        '或者用字符串,数据库中相应字段类型也要改为文本

        'Dim data as string="123456789012345"

        Dim m As Integer = 0 '记录SQL语句执行行数

        SQLString = "INSERT INTO tb(ID1) VALUES('" & data & "')" 'Testmdb中 tb表

        MyConnectionOpen() '打开数据连接

        MyCommand = New OleDbCommand(SQLString, MyConnection) '定义新的 *** 作命令

        Try '尝试执行

            m = MyCommandExecuteNonQuery() '执行插入 *** 作,并返回受影响的行数

        Catch ex As Exception '获取异常

            MsgBox(exToString) '显示异常信息

        End Try

        If m = 1 Then

            MsgBox("保存数据成功")

        Else

            MsgBox("保存数据失败")

        End If

        MyConnectionClose() '关闭连接

        MyCommandDispose() '释放对象

    End Sub

End Class

这个要分2步来处理:

1是接收com口数据,并整理得到所需要的所有数据: Address,Humidity,Temperature,SoilMoisture,Voltage;

2数据库 *** 作, 这里是insert数据

sql语句可以这样写:string strquery = StringFormat("insert into table(Address,Humidity,Temperature,SoilMoisture,Voltage) values({0},{1},{2},{3},{4})", Address,Humidity,Temperature,SoilMoisture,Voltage);

执行sql语句

将串口转换成网口工具,编写通讯协议,建立连接对回码包解析拆分存储。

读取串口服务器数据,总体上的思路如下。

1、应用串口转网口工具,将串口通讯转换成网口通讯。

2、根据不同通讯协议,编写相关通讯协议,建立连接,读取服务器端回码。

3、对回码进行数据包解析拆分。

4、将回码的数据要么进行转发或者存储数据库。

串行接口的接收和发送是对同一个地址(99H)两个物理控制的特殊寄存器SBUF进行读与写得,当向SBUF发写命令时,即向缓冲期SBUF装载并开始TXD引脚向外发送一帧数据,发送完便发送中断标志T1=1,在满足串行口接收中断标志位R1=0的条件下,置允许接收位REN=1就会接收一帧数据进行移位寄存器,并装载和接收到SBUF中,同时使R1=1当发读SBUF命令时(执行 MOVA SBUF)便由接收缓冲期SBUF的信息通过内部总线送到CPU

首先,单片机里面要有程序。

然后,电脑串口的参数要与单片机一致。例:9600,N,8,1 (9600波特率,无校验,8个数据位,1个停止位)。

最后,点:“打开串口”。当单片机有数据发送时,PC电脑就能显示数据。

注意显示格式:如果单片机是按16进制发送,则PC也要设为16进制显示。

以上就是关于C# serialport内datareceived事件接收串口数据,详细步骤。全部的内容,包括:C# serialport内datareceived事件接收串口数据,详细步骤。、access如何接受 stm32的数据、如何采用c#编一个控制台应用程序,接收串口来的数据存入SQL Server数据库,等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/9761782.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-01
下一篇2023-05-01

发表评论

登录后才能评论

评论列表(0条)

    保存