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

单片机有自身的程序,在程序控制下工作,它读取外部的数据或状态(输入),经过内部运算后,再输出到外部去显示或控制电子设备的开关,内部数据你是看不到的。

不知道你读取内部数据干什么用的。

是想得到其程序?程序一般都 是加密的,找专门解密的公司才可以读出,但这是不道德的,也是不合法的

STC12C5A60AD存储读取数据是用EEPROM,这是最好的方式了,在EEPROM中存储的数据是有掉电保护的。除此之外,就没有再好的保存方式了。在内部RAM中是可以保存数据的,但是不能掉电保护。在没有STC单片机时,是用IIC的芯片,如AT24CXX系列芯片,可是IIC芯片的程序太麻烦了,而且在片外储存数据也并不能保证更稳定。


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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存