51单片机如何读取sql数据库?

51单片机如何读取sql数据库?,第1张

你需要做个个串口通讯,将单片机的数据上载到电脑端,电脑端要写一个上位机。可讲通讯过来的数据存入 sql server的数据库中

单片机端需要写串口程序,PC 端需要些上位机软件 VB可以写用MSComm1 控件

通讯例子如下

Dim i As Integer

Dim a As Integer

Dim t() As Byte

Private Sub Command1_Click()

If Command1.Caption = "打开串口" Then

'Shape1.Visible = True

Shape1.FillColor = &HFF&

Shape1.BackColor = &HFF&

Shape1.BorderColor = &HFF&

Command2.Enabled = True

Command3.Enabled = True

Command1.Caption = "关闭串口"

'MSComm1.CommPort = 1 '设定Com1口

MSComm1.CommPort = Combo1.Text '设定Com1口

If MSComm1.PortOpen = False Then

'MSComm1.Settings = "4800,N,8,1" '4800波特率,无校验,8位数据位,1位停止位

MSComm1.Settings = Combo2.Text &"," &Combo3.Text &"," &Combo4.Text &"," &Combo5.Text '4800波特率,无校验,8位数据位,1位停止位

MSComm1.InputLen = 1 '读取接收缓冲区的所有字符

MSComm1.InputLen = 5

MSComm1.InBufferSize = 5 '设置接收缓冲区为1024字节

MSComm1.OutBufferSize = 5 '设置发送缓冲区为512字节

MSComm1.SThreshold = 0 '不触发发送事件

MSComm1.RThreshold = 1 '每一个字符到接收缓冲区都触发接收事件

MSComm1.PortOpen = True '打开串口

End If

MSComm1.OutBufferCount = 0 '清空发送缓冲区

MSComm1.InBufferCount = 0 '清空接收缓冲区

Dim temp() As Byte

Else

'Option2.Value = False

'Option1.Value = False

'Shape1.Visible = False

Shape1.BackColor = &H808080

Shape1.BorderColor = &H808080

Shape1.FillColor = &H808080

Command2.Enabled = False

'Command3.Enabled = False

MSComm1.PortOpen = False

Command1.Caption = "打开串口"

End If

End Sub

Private Sub Command2_Click()

'Command2.Enabled = False

'Option2.Value = False

'Option1.Value = False

'Shape2.Visible = False

MSComm1.OutBufferCount = 0 '清空发送缓冲区

MSComm1.InBufferCount = 0 '清空接收缓冲区

't(0) = "255"

' MSComm1.Output = t

MSComm1.Output = Text2.Text

End Sub

Private Sub Command3_Click()

Text1.Text = ""

End Sub

Private Sub Command5_Click() '退出

End

End Sub

Private Sub Command6_Click()

Text2.Text = ""

End Sub

Private Sub Command7_Click()

If Command7.Value Then

'Command7.Visible = False

Command1.Visible = True

Command2.Visible = True

Command3.Visible = True

Command6.Visible = True

Label1.Visible = True

Label2.Visible = True

Label3.Visible = True

Label4.Visible = True

Label5.Visible = True

Label6.Visible = True

Label7.Visible = True

Combo1.Visible = True

Combo2.Visible = True

Combo3.Visible = True

Combo4.Visible = True

Combo5.Visible = True

Text1.Visible = True

Text2.Visible = True

Frame1.Visible = True

Frame2.Visible = False

'Command3.Visible = False

'Option1.Value = False

Shape1.Visible = True

Else

Label1.Visible = False

Label2.Visible = False

Label3.Visible = False

Label4.Visible = False

Label5.Visible = False

Label6.Visible = False

Label7.Visible = False

Combo1.Visible = False

Combo2.Visible = False

Combo3.Visible = False

Combo4.Visible = False

Combo5.Visible = False

Command1.Visible = False

Command2.Visible = False

Command3.Visible = False

Text1.Visible = False

Text2.Visible = False

Frame1.Visible = False

Frame2.Visible = False

End If

End Sub

Private Sub Form_Load()

MSComm1.InBufferCount = 0 '清除发送缓冲区数据

MSComm1.OutBufferCount = 0 '清除接收缓冲区数据

ReDim t(0)

t(0) = "0"

Combo1.AddItem "1"

Combo1.AddItem "2"

Combo1.AddItem "3"

Combo1.AddItem "4"

'Combo1.Text = "1"

Combo2.AddItem "300"

Combo2.AddItem "600"

Combo2.AddItem "1200"

Combo2.AddItem "2400"

Combo2.AddItem "4800"

Combo2.AddItem "9600"

Combo2.AddItem "19200"

Combo3.AddItem "N"

Combo3.AddItem "O"

Combo3.AddItem "E"

Combo4.AddItem "8"

Combo4.AddItem "7"

Combo4.AddItem "6"

Combo5.AddItem "1"

Combo5.AddItem "2"

Combo5.AddItem "3"

End Sub

Private Sub MSComm1_OnComm()

Dim s1 As String

Dim s2 As String

Select Case MSComm1.CommEvent

Case comEventOverrun '数据丢失

Text_SEND.Text = "" '清空发送缓冲区

Text_RECV.Text = "" '清空接收缓冲区

Text_SEND.SetFocus

Exit Sub

Case comEventRxOver '接收缓冲区溢出

Text_SEND.Text = "" '清空发送缓冲区

Text_RECV.Text = "" '清空接收缓冲区

Text_SEND.SetFocus

Exit Sub

Case comEventTxFull '发送缓冲区已满

Text_SEND.Text = "" '清空发送缓冲区

Text_RECV.Text = "" '清空接收缓冲区

Text_SEND.SetFocus

Exit Sub

Case comEvReceive '接收字符数据

Dim Buffer As Variant

MSComm1.InputLen = 1

MSComm1.InputMode = comInputModeBinary '二进制传输

Buffer = MSComm1.Input

'Text1.Text = Buffer(0)

's2 = Buffer(1)

Text1.Text = Text1.Text &(Val(MSComm1.Input)) &" "

Case Else

End Select

End Sub

Private Sub Option1_Click()

End Sub

基本不行,这个玩意的rom和ram都太小,跑个 *** 作系统都艰难,哪有空间来搞数据库。当然他读写数据的方式你倒是可以研究研究,但意义不大,因为针对一般开发人员而言,他的地址都是直接透明的,也就是说我的数据读写我能清楚知道在存储空间的那个位置,而根本不需要 *** 作系统管理,那样浪费我的存储空间。

如果你真想搞一搞,换ARM+ *** 作系统的。可以是M3(A8)+UCOS

也可以是arm9(arm11)+linux

1、直接:单片机配以太网接口,移植个tcp/ip协议站,单片机直接登陆服务器上传数据;

2、间接:单片机通过串口、USB等其他接口把数据传给有以太网的模块或设备(如电脑),在传到服务器。


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

原文地址: http://outofmemory.cn/sjk/9707127.html

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

发表评论

登录后才能评论

评论列表(0条)

保存