上位機(jī)軟件開發(fā)實(shí)例(上位機(jī)軟件開發(fā)工程師)
本篇文章給大家談?wù)勆衔粰C(jī)軟件開發(fā)實(shí)例,以及上位機(jī)軟件開發(fā)工程師對(duì)應(yīng)的知識(shí)點(diǎn),希望對(duì)各位有所幫助,不要忘了收藏本站喔。
本文目錄一覽:
- 1、求推薦C#開發(fā)上位機(jī)的書籍?
- 2、vb串口通信程序?qū)嵗?/a>
- 3、如何用c語言開發(fā)自己的上位機(jī)軟件
- 4、利用電腦做上位機(jī)開發(fā)一個(gè)軟件,用單片機(jī)做下位機(jī)。在上位機(jī)上點(diǎn)擊軟件上的按鈕能使單片機(jī)輸出一路I/O口
- 5、求畢業(yè)設(shè)計(jì)參考:?jiǎn)纹瑱C(jī)與上位機(jī)(PC)通信電路與軟件設(shè)計(jì)
求推薦C#開發(fā)上位機(jī)的書籍?
先學(xué)習(xí)串口通信上位機(jī)程序開發(fā),主要找?guī)讉€(gè)百度的例子學(xué)一下就行,很快,之后就是看C#的書了,推薦
Dorman.S.J著,劉琦,袁國(guó)忠譯.C#5.0入門經(jīng)典[M].北京;人民郵電出版社,2014.4.
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為讀取寄存器長(zhǎng)度
pu(5)?=?"H02"?'4、5為讀取寄存器長(zhǎng)度
pu(6)?=?"HC5"?'6、7為CRC校驗(yàn)碼?因?yàn)槲覀儾恢涝O(shè)備的CRC校驗(yàn)規(guī)則所以用測(cè)試軟件產(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ù)長(zhǎng)度,我們通過COM檢測(cè)精靈看到了回傳數(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ù)長(zhǎng)度?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
這是我的測(cè)試結(jié)果。
下面是通訊協(xié)議
這個(gè)是我的軟件用檢測(cè)精靈檢測(cè)的結(jié)果
如何用c語言開發(fā)自己的上位機(jī)軟件
一般開發(fā)上位機(jī)軟件都是帶圖形界面的。C也能做出圖形界面的軟件,但是開發(fā)周期太長(zhǎng)也不實(shí)用。所以最好還是需要會(huì)一些其他語言,例如C++,C#,Java這些做圖形界面開發(fā)周期短的語言。既然會(huì)C,那么學(xué)習(xí)其他語言也只是一個(gè)熟悉語法的過程。所以很快就能上手,因?yàn)檎Z言都是相通的嘛??梢蚤_闊自己的視野去學(xué)習(xí)一下新的語言。不是說只會(huì)C有什么弊端,只是想說會(huì)的多才會(huì)知道語言之間的優(yōu)劣。
利用電腦做上位機(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ì)。
求畢業(yè)設(shè)計(jì)參考:?jiǎn)纹瑱C(jī)與上位機(jī)(PC)通信電路與軟件設(shè)計(jì)
我?guī)湍銓懥藗€(gè)程序:
/*
硬件環(huán)境:AT89C51
P1口接LED8個(gè)燈
*/
#include?"reg52.h"
#define?uchar?unsigned?char
#define?uint?unsigned?int
bit?R_MOVING_LIGHT=0,L_MOVING_LIGHT=0;
uchar?DATA_1,DATA_2;
/*
--初始化AT89C52?串行端口--
T1?方式2?(8位重裝載)?波特率9600,啟動(dòng)T1
T0?方式1?(16位定時(shí)器),未初始化,未啟動(dòng)
串行口設(shè)置為方式1(8?bit?UART)
*/
void?delay_1ms(uint?_1ms)
{
uint?i;
while?(_1ms--)
{
i=1000;
while(i--);
}
}
void?init_serial_port(void)
{
SM2=0;
SM0=0;SM1=1;//串口工作在方式1
TMOD=0x20;//定時(shí)器1工作在方式2
TH1=253;
TL1=253;//波特率9600b/s
EA=1;//總中斷允許
ES=1;//允許串口中斷
REN=1;
TR1=1;
}
void??serial_port_init()??interrupt?4
{
uchar?i;
RI=0;
i=SBUF;
if(i=='R')
{
R_MOVING_LIGHT=1;
L_MOVING_LIGHT=0;
DATA_1=0x80;
}
if(i=='L')
{
L_MOVING_LIGHT=1;
R_MOVING_LIGHT=0;
DATA_2=0x01;
}
}
void?main()
{
init_serial_port();
P1=0x00;
while(1)
{
if(R_MOVING_LIGHT)
{
P1=DATA_1;
delay_1ms(100);??//100MS???調(diào)節(jié)改變流水燈速度
DATA_1=1;
if(!DATA_1)
DATA_1=0x80;
}
if(L_MOVING_LIGHT)
{
P1=DATA_2;
delay_1ms(100);
DATA_2=1;
if(!DATA_2)
DATA_2=0x01;
}
}
}
因?yàn)槲疫@邊硬件不方便搭,沒有看最終效果,有什么問題可以找我!
下圖為單片機(jī)P1口與8個(gè)LED燈的連接方法,為高電平亮低電平滅。
關(guān)于上位機(jī)軟件開發(fā)實(shí)例和上位機(jī)軟件開發(fā)工程師的介紹到此就結(jié)束了,不知道你從中找到你需要的信息了嗎 ?如果你還想了解更多這方面的信息,記得收藏關(guān)注本站。