在线看国产黄av免费|国产呻吟久久久久久久|欧美日韩国产911在线|国产成人综合亚洲无码中字|国产精品成人VA在线播放|亚洲无码电影视频在线播放|亚洲精品网站在线观看你懂的|久久人午夜亚洲精品无码区性色

上位機(jī)軟件開發(fā)實(shí)例(java開發(fā)上位機(jī)軟件)

軟件開發(fā) 4157
本篇文章給大家談?wù)勆衔粰C(jī)軟件開發(fā)實(shí)例,以及java開發(fā)上位機(jī)軟件對(duì)應(yīng)的知識(shí)點(diǎn),希望對(duì)各位有所幫助,不要忘了收藏本站喔。 本文目錄一覽: 1、

本篇文章給大家談?wù)勆衔粰C(jī)軟件開發(fā)實(shí)例,以及java開發(fā)上位機(jī)軟件對(duì)應(yīng)的知識(shí)點(diǎn),希望對(duì)各位有所幫助,不要忘了收藏本站喔。

本文目錄一覽:

【上下位機(jī)通信】:下位機(jī)(STM32)通過網(wǎng)口(DM9000之類的.)向上位機(jī)PC發(fā)送數(shù)據(jù)。求上位機(jī)例子程序~

?用?socket? 類? udp? tcp? ? ? ?我這?給你個(gè)? 最簡單的?例子? udp

服務(wù)器端

Imports?System.Net.Sockets

Imports?System.Net

Module?socketsever

? Sub?main()

? ? ? startserver()

? ? End?Sub

? Private?Sub?startserver()

? ? ? '創(chuàng)建服務(wù)器端的socket

? ? ? Dim?sServer?As?New?Socket(AddressFamily.InterNetwork,?SocketType.Dgram,?ProtocolType.Udp)

? ? ? Dim?myip?As?IPAddress

? ? ? '制訂本地回路的ip地址

? ? ? myip?=?IPAddress.Parse("10.13.115.105")

? ? ? '設(shè)置服務(wù)器端口號(hào)

? ? ? Dim?sServerep?As?New?IPEndPoint(myip,?2001)

? ? ? '設(shè)置客戶端的端口號(hào)

? ? ? Dim?clientep?As?New?IPEndPoint(myip,?2002)

? ? ? '將端口與socket綁定

? ? ? sServer.Bind(sServerep)

? ? ? While?True

? ? ? ? ? Try

? ? ? ? ? ? ? Dim?bytes(100)?As?Byte

? ? ? ? ? ? ? '等待客戶端的請(qǐng)求

? ? ? ? ? ? ? sServer.ReceiveFrom(bytes,?clientep)

? ? ? ? ? ? ? Dim?str?As?String?=?System.Text.Encoding.ASCII.GetString(bytes)

? ? ? ? ? ? ? '將字符轉(zhuǎn)化成大寫

? ? ? ? ? ? ? str?=?str.ToUpper

? ? ? ? ? ? ? bytes?=?System.Text.Encoding.ASCII.GetBytes(str)

? ? ? ? ? ? ? '返回結(jié)果

? ? ? ? ? ? ? sServer.SendTo(bytes,?clientep)

? ? ? ? ? Catch?e?As?SocketException

? ? ? ? ? End?Try

? ? ? End?While

? End?Sub

End?Module

客戶端

界面? 和程序

Imports?System.Net.Sockets

Imports?System.Net

Public?Class?Form1

? Inherits?System.Windows.Forms.Form

? Private?Sub?bsend_Click(ByVal?sender?As?System.Object,?ByVal?e?As?System.EventArgs)?Handles?bsend.Click

? ? ? '創(chuàng)建客戶端的socket

? ? ? Dim?cClient?As?New?Socket(AddressFamily.InterNetwork,?SocketType.Dgram,?ProtocolType.Udp)

? ? ? '指定本地回路的ip地址

? ? ? Dim?myip,?myip1?As?IPAddress

? ? ? myip?=?IPAddress.Parse("10.13.115.105")

? ? ? myip1?=?IPAddress.Parse("10.13.115.136")

? ? ? '設(shè)置服務(wù)器端口號(hào)

? ? ? Dim?Serverep?As?New?IPEndPoint(myip1,?2001)

? ? ? '設(shè)置客戶端的端口號(hào)

? ? ? Dim?clientep?As?New?IPEndPoint(myip,?2002)

? ? ? '將端口與socket綁定

? ? ? cClient.Bind(clientep)

? ? ? Try

? ? ? ? ? Dim?str?As?String?=?Textinput.Text

? ? ? ? ? Dim?bytes()?As?Byte?=?System.Text.Encoding.ASCII.GetBytes(str)

? ? ? ? ? '向服務(wù)器發(fā)出請(qǐng)求

? ? ? ? ? cClient.SendTo(bytes,?Serverep)

? ? ? ? ? Dim?bytes2(100)?As?Byte

? ? ? ? ? '接受服務(wù)器的響應(yīng)結(jié)果

? ? ? ? ? cClient.ReceiveFrom(bytes2,?Serverep)

? ? ? ? ? str?=?System.Text.Encoding.ASCII.GetString(bytes2)

? ? ? ? ? '將結(jié)果顯示在文本框中

? ? ? ? ? Textdisplay.Text?=?Textdisplay.Text??vbNewLine??str

? ? ? Catch?er?As?SocketException

? ? ? ? ? MsgBox(er.ToString)

? ? ? End?Try

? ? ? cClient.Close()

? End?Sub

End?Class

利用電腦做上位機(jī)開發(fā)一個(gè)軟件,用單片機(jī)做下位機(jī)。在上位機(jī)上點(diǎn)擊軟件上的按鈕能使單片機(jī)輸出一路I/O口

主要涉及到單片機(jī)基礎(chǔ)知識(shí),重點(diǎn)是串口通信,上位機(jī)可以考慮vc和.net,這兩種都可以。.net使用c#語言,感覺比較好上手,我也可以給你點(diǎn)視頻教程,一學(xué)就會(huì)。

如何用c語言開發(fā)自己的上位機(jī)軟件

一般開發(fā)上位機(jī)軟件都是帶圖形界面的。C也能做出圖形界面的軟件,但是開發(fā)周期太長也不實(shí)用。所以最好還是需要會(huì)一些其他語言,例如C++,C#,Java這些做圖形界面開發(fā)周期短的語言。既然會(huì)C,那么學(xué)習(xí)其他語言也只是一個(gè)熟悉語法的過程。所以很快就能上手,因?yàn)檎Z言都是相通的嘛??梢蚤_闊自己的視野去學(xué)習(xí)一下新的語言。不是說只會(huì)C有什么弊端,只是想說會(huì)的多才會(huì)知道語言之間的優(yōu)劣。

If?Not?MSComm1.PortOpen?Then

??MSComm1.CommPort?=?7?'串口為7

??MSComm1.Settings?=?"9600,n,8,1"

??MSComm1.InBufferCount?=?0?'清除接收緩沖區(qū)

??MSComm1.OutBufferCount?=?0?'清除發(fā)送緩沖區(qū)

??MSComm1.InputMode?=?comInputModeBinary?'二進(jìn)制接收

??MSComm1.InputLen?=?0?'讀取接收緩沖區(qū)的所有字符

??MSComm1.PortOpen?=?True??'打開串口

??MSComm1.RTSEnable?=?False?'置為發(fā)送狀態(tài)

End?If

Dim?pu()?As?Byte

Dim?strdata??As?String

Dim?crc_js()?As?Byte

ReDim?pu(7)??'這個(gè)數(shù)組是8位的查詢指令

pu(0)?=?"H00"?'溫度計(jì)地址

pu(1)?=?"H03"?'查詢指令

pu(2)?=?"H00"?'2、3為溫度計(jì)地址

pu(3)?=?"H00"?'2、3為溫度計(jì)地址

pu(4)?=?"H00"?'4、5為讀取寄存器長度

pu(5)?=?"H02"?'4、5為讀取寄存器長度

pu(6)?=?"HC5"?'6、7為CRC校驗(yàn)碼?因?yàn)槲覀儾恢涝O(shè)備的CRC校驗(yàn)規(guī)則所以用測試軟件產(chǎn)生的校驗(yàn)碼

pu(7)?=?"HDA"?'6、7為CRC校驗(yàn)碼

MSComm1.Output?=?pu

'不做任何事情,僅僅允許其它應(yīng)用程序處理它們的事件。

DoEvents

MSComm1.InBufferCount?=?0?'清除接收緩沖區(qū)

MSComm1.RThreshold?=?9?'所要接收的數(shù)據(jù)長度,我們通過COM檢測精靈看到了回傳數(shù)據(jù)一共是9字節(jié)

MSComm1.RTSEnable?=?True?'轉(zhuǎn)為接收狀態(tài)

End?Sub

Private?Sub?Command2_Click()

Timer1.Enabled?=?False

End?Sub

Private?Sub?Form_Unload(Cancel?As?Integer)

????If?MSComm1.PortOpen?Then

????????MSComm1.PortOpen?=?False??'關(guān)閉串口

????End?If

????Timer1.Enabled?=?False

End?Sub

Private?Sub?MSComm1_OnComm()?'COM事件

????Dim?PA()?As?Byte

????Dim?PB?As?String

Select?Case?MSComm1.CommEvent

?Case?comEvReceive

????????????MSComm1.InputLen?=?0?'讀取接收緩沖區(qū)的所有字符

????????????PB?=?MSComm1.Input

????????????PA()?=?PB

????????????For?i?=?0?To?UBound(PA())

????????????????'Print?"PA("??i??")";?PA(i)

????????????????If?Len(Hex(PA(i)))?=?1?Then

????????????????????strdata?=?strdata??"0"??Hex(PA(i))

????????????????Else

????????????????????strdata?=?strdata??Hex(PA(i))

????????????????End?If

????????????Next

????????????'回傳的數(shù)據(jù)串:000304012600000AC4,這9字節(jié)根據(jù)通訊協(xié)議我們進(jìn)行拆分

????????????'00為協(xié)議內(nèi)回傳機(jī)號(hào),03為讀命令,04為返回的數(shù)據(jù)長度?0126?為我要的溫度數(shù)據(jù)為十六進(jìn)制表達(dá),下面我進(jìn)行數(shù)據(jù)處理

????????????wd?=?CLng("H"??Left(Right(strdata,?12),?4))?/?10??"℃"???'根據(jù)通訊協(xié)議換算成溫度

????????????Text1?=?Text1??vbCrLf??strdata??"??"??wd

????????????strdata?=?""

???MSComm1.PortOpen?=?False??'關(guān)閉串口

?End?Select

End?Sub

Private?Sub?Timer1_Timer()

Call?Command1_Click

End?Sub

這是我的測試結(jié)果。

下面是通訊協(xié)議

這個(gè)是我的軟件用檢測精靈檢測的結(jié)果

上位機(jī)軟件開發(fā)實(shí)例的介紹就聊到這里吧,感謝你花時(shí)間閱讀本站內(nèi)容,更多關(guān)于java開發(fā)上位機(jī)軟件、上位機(jī)軟件開發(fā)實(shí)例的信息別忘了在本站進(jìn)行查找喔。

掃碼二維碼