
//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 SystemDataOleDbPublic 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数据库,等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)