上位機(jī)軟件開發(fā)案例(上位機(jī)軟件開發(fā)是什么意思)
今天給各位分享上位機(jī)軟件開發(fā)案例的知識,其中也會對上位機(jī)軟件開發(fā)是什么意思進(jìn)行解釋,如果能碰巧解決你現(xiàn)在面臨的問題,別忘了關(guān)注本站,現(xiàn)在開始吧!
本文目錄一覽:
- 1、上位機(jī)開發(fā)
- 2、利用電腦做上位機(jī)開發(fā)一個軟件,用單片機(jī)做下位機(jī)。在上位機(jī)上點擊軟件上的按鈕能使單片機(jī)輸出一路I/O口
- 3、能給我發(fā)個VB與三菱PLC通訊的源代碼實例嗎,非常感謝啊
- 4、現(xiàn)在在開發(fā)一個上位機(jī)應(yīng)用程序,使用vs2008中的vb.net開發(fā)基于wince的應(yīng)用程序,實現(xiàn)對串口采集過來的數(shù)據(jù)
- 5、如何用c語言開發(fā)自己的上位機(jī)軟件
- 6、誰幫我推薦幾款三軸運(yùn)動控制器,可以示教編程的
上位機(jī)開發(fā)
就目前就業(yè)市場來看,不管上位機(jī),還是下位機(jī),應(yīng)用程序領(lǐng)域的人才需求總是最大的。
做測試軟件其實不一定需要用 c#,假如你對c/c++開發(fā)比較熟,那直接用 MFC 等寫些
對話框應(yīng)用就好了,測試軟件不至于會太復(fù)雜。另外假如 c/c++ 通了,C#之類的不要
太簡單。
對于做工作來說的話,除非你已經(jīng)走在自己已經(jīng)認(rèn)準(zhǔn)的那條道上了。否則你還是兵來將
擋,水來土掩的好。任何時候,有任何需要,你憑借自己的基礎(chǔ)稍做學(xué)習(xí)都能立馬上手。
還有一點,不是說你今天或者這幾個月做了 c# ,后面幾年時間你就必須得用它來吃飯了。
做c#的過程也許只是你長期職業(yè)追求中的一個插曲而已,對于增加知識面也有好處。
利用電腦做上位機(jī)開發(fā)一個軟件,用單片機(jī)做下位機(jī)。在上位機(jī)上點擊軟件上的按鈕能使單片機(jī)輸出一路I/O口
主要涉及到單片機(jī)基礎(chǔ)知識,重點是串口通信,上位機(jī)可以考慮vc和.net,這兩種都可以。.net使用c#語言,感覺比較好上手,我也可以給你點視頻教程,一學(xué)就會。
能給我發(fā)個VB與三菱PLC通訊的源代碼實例嗎,非常感謝啊
得說明是什么型號的PLC啊,串口還是網(wǎng)口,VB6還是VB.NET?
算了,寫段代碼,VB.NET與Q系列以太網(wǎng)通訊的:
Imports?System.Net
Imports?System.Runtime.InteropServices
Public?Class?Form1
????Dim?Handle1?As?Int32
????Dim?EntLink1?As?Boolean
????Dim?ScanCount1?As?Long
????Dim?PLC?As?New?EntQsPlc_Asc.PlcClient'EntQsPlc_ASC.DLL是Q系列以太網(wǎng)通訊組件
????Public?Declare?Function?timeGetTime?Lib?"winmm.dll"?()?As?UInt32
????Private?Sub?Form1_Load(ByVal?sender?As?System.Object,?ByVal?e?As?System.EventArgs)?Handles?MyBase.Load
????????Me.CenterToScreen()
????????cmbReadMry.Items.Clear()
????????cmbReadMry.Items.Add("X")
????????cmbReadMry.Items.Add("Y")
????????cmbReadMry.Items.Add("M")
????????cmbReadMry.Items.Add("D")
????????cmbReadMry.Items.Add("R")
????????cmbReadMry.Items.Add("Z")
????????'
????????cmbWriteMry.Items.Clear()
????????cmbWriteMry.Items.Add("X")
????????cmbWriteMry.Items.Add("Y")
????????cmbWriteMry.Items.Add("M")
????????cmbWriteMry.Items.Add("D")
????????cmbWriteMry.Items.Add("R")
????????cmbWriteMry.Items.Add("Z")
????????'
????????cmbBitMry.Items.Clear()
????????cmbBitMry.Items.Add("X")
????????cmbBitMry.Items.Add("Y")
????????cmbBitMry.Items.Add("M")
????????'
????????cmbReadType.Items.Clear()
????????cmbReadType.Items.Add("INT16")
????????cmbReadType.Items.Add("UINT16")
????????cmbReadType.Items.Add("DINT32")
????????cmbReadType.Items.Add("HEX32")
????????cmbReadType.Items.Add("REAL32")
????????cmbReadType.Items.Add("BIN16")
????????'
????????cmbWriteType.Items.Clear()
????????cmbWriteType.Items.Add("INT16")
????????cmbWriteType.Items.Add("UINT16")
????????cmbWriteType.Items.Add("DINT32")
????????cmbWriteType.Items.Add("HEX32")
????????cmbWriteType.Items.Add("REAL32")
????????cmbWriteType.Items.Add("BIN16")
????????cmbReadMry.SelectedIndex?=?3
????????cmbWriteMry.SelectedIndex?=?3
????????cmbBitMry.SelectedIndex?=?2
????????cmbReadType.SelectedIndex?=?0
????????cmbWriteType.SelectedIndex?=?0
????????lstRead.Items.Clear()
????????txtWrite.Text?=?""
????????'
????????cmbCmdType.SelectedIndex?=?0
????End?Sub
????Private?Sub?butLink_Click(ByVal?sender?As?System.Object,?ByVal?e?As?System.EventArgs)?Handles?butLink.Click
????????Dim?re?As?Short
????????Dim?restr?As?String?=?""
????????re?=?PLC.EntLink(Trim(txtLocalIP.Text),?Val(txtLocalPort.Text),?Trim(txtRemoteIP.Text),?Val(txtRemotePort.Text),?"DEMO",?Handle1,?1000,?CBool(cmbCmdType.SelectedIndex))
????????txtReLink.Text?=?re.ToString
????????If?re?=?0?Then
????????????EntLink1?=?True
????????????MsgBox("PLC聯(lián)接成功!?")
????????Else
????????????EntLink1?=?False
????????????MsgBox("PLC聯(lián)接失敗:?"??restr)
????????End?If
????End?Sub???????????
????Private?Sub?butClose_Click(ByVal?sender?As?System.Object,?ByVal?e?As?System.EventArgs)?Handles?butClose.Click
????????Dim?re?As?Short
????????If?Not?EntLink1?Then
????????????MsgBox("還未與PLC建立聯(lián)接!")
????????????Exit?Sub
????????End?If
????????re?=?PLC.DeLink(Handle1)
????????txtReClose.Text?=?re.ToString
????End?Sub
????Private?Sub?butRead_Click(ByVal?sender?As?System.Object,?ByVal?e?As?System.EventArgs)?Handles?butRead.Click
????????Dim?re?As?Short
????????Dim?i?As?Short
????????Dim?RD()?As?Object
????????ReDim?RD(Val(txtReadCnt.Text?-?1))
????????If?Not?EntLink1?Then
????????????MsgBox("還未與PLC建立聯(lián)接!")
????????????'?Exit?Sub
????????End?If
????????Dim?mry?As?EntQsPlc_Asc.PlcClient.PlcMemory?=?cmbReadMry.SelectedIndex?+?1
????????Dim?typ?As?EntQsPlc_Asc.PlcClient.DataType?=?cmbReadType.SelectedIndex?+?1
????????re?=?PLC.CmdRead(Handle1,?mry,?typ,?CInt(txtReadAdd.Text),?CUShort(txtReadCnt.Text),?RD)
????????txtReRead.Text?=?re.ToString
????????lstRead.Items.Clear()
????????For?i?=?0?To?UBound(RD)?Step?1
????????????If?Not?IsNothing(RD(i))?Then?lstRead.Items.Add(RD(i))
????????Next?i
????????If?re??0?Then
????????????Timer1.Enabled?=?False
????????????butScan.Text?=?"Cycle?R/W"
????????End?If
????End?Sub
????Private?Sub?butWrite_Click(ByVal?sender?As?System.Object,?ByVal?e?As?System.EventArgs)?Handles?butWrite.Click
????????Dim?re?As?Short
????????Dim?i?As?Short
????????Dim?temp()?As?String
????????Dim?WD()?As?Object
????????If?Not?EntLink1?Then
????????????MsgBox("還未與PLC建立聯(lián)接!")
????????????Exit?Sub
????????End?If
????????ReDim?WD(Val(txtWriteCnt.Text)?-?1)
????????temp?=?Split(txtWrite.Text,?vbCrLf)
????????For?i?=?0?To?UBound(WD)?Step?1
????????????If?i??UBound(temp)?Then
????????????????WD(i)?=?0
????????????Else
????????????????WD(i)?=?Trim(temp(i))
????????????End?If
????????Next?i
????????Dim?mry?As?EntQsPlc_Asc.PlcClient.PlcMemory?=?cmbWriteMry.SelectedIndex?+?1
????????Dim?typ?As?EntQsPlc_Asc.PlcClient.DataType?=?cmbWriteType.SelectedIndex?+?1
????????re?=?PLC.CmdWrite(Handle1,?mry,?typ,?CInt(txtWriteAdd.Text),?CUShort(txtWriteCnt.Text),?WD)
????????txtReWrite.Text?=?re.ToString
????????If?re??0?Then
????????????Timer1.Enabled?=?False
????????????butScan.Text?=?"Cycle?R/W"
????????End?If
????End?Sub
????
????
????Private?Sub?butScan_Click(ByVal?sender?As?System.Object,?ByVal?e?As?System.EventArgs)?Handles?butScan.Click
????????If?Not?EntLink1?Then
????????????MsgBox("還未與PLC建立聯(lián)接!")
????????????Exit?Sub
????????End?If
????????Timer1.Enabled?=?Not?Timer1.Enabled
????????If?Timer1.Enabled?Then
????????????ScanCount1?=?0
????????????butScan.Text?=?"Stop?R/W"
????????Else
????????????butScan.Text?=?"Cycle?R/W"
????????End?If
????End?Sub
????Private?Sub?Timer1_Tick(ByVal?sender?As?System.Object,?ByVal?e?As?System.EventArgs)?Handles?Timer1.Tick
????????Timer1.Enabled?=?False
????????Dim?tim?As?Integer?=?timeGetTime
????????If?Not?EntLink1?Then
????????????MsgBox("還未與PLC建立聯(lián)接!")
????????????Exit?Sub
????????End?If
????????'
????????Call?butRead_Click(Nothing,?Nothing)
????????Call?butWrite_Click(Nothing,?Nothing)
????????'
????????If?(Val(txtReRead.Text)??0)?Or?(Val(txtReWrite.Text)??0)?Then
????????????butScan.Text?=?"Cycle?R/W"
????????????Exit?Sub
????????Else
????????????ScanCount1?+=?1
????????????txtScanCnt.Text?=?ScanCount1
????????????txtScanPrd.Text?=?(timeGetTime?-?tim)??"ms"
????????End?If
????????Timer1.Enabled?=?True
????End?Sub
????Private?Sub?butBitTest_Click(ByVal?sender?As?System.Object,?ByVal?e?As?System.EventArgs)?Handles?butBitTest.Click
????????If?Not?EntLink1?Then
????????????MsgBox("還未與PLC建立聯(lián)接!")
????????????Exit?Sub
????????End?If
????????Dim?rd?As?Boolean
????????Dim?re?As?Short
????????Dim?mry?As?EntQsPlc_Asc.PlcClient.PlcMemory?=?cmbBitMry.SelectedIndex?+?1
????????re?=?PLC.Bit_Test(Handle1,?mry,?CUShort(txtBitAdd.Text),?rd)
????????txtBitTest.Text?=?rd
????????txtReBit.Text?=?re
????End?Sub
????Private?Sub?butBitSet_Click(ByVal?sender?As?System.Object,?ByVal?e?As?System.EventArgs)?Handles?butBitSet.Click
????????If?Not?EntLink1?Then
????????????MsgBox("還未與PLC建立聯(lián)接!")
????????????Exit?Sub
????????End?If
????????Dim?re?As?Short
????????re?=?PLC.Bit_Set(Handle1,?cmbBitMry.SelectedIndex?+?1,?Val(txtBitAdd.Text))
????????txtReBit.Text?=?re
????End?Sub
????Private?Sub?butBitRst_Click(ByVal?sender?As?System.Object,?ByVal?e?As?System.EventArgs)?Handles?butBitRst.Click
????????If?Not?EntLink1?Then
????????????MsgBox("還未與PLC建立聯(lián)接!")
????????????Exit?Sub
????????End?If
????????Dim?re?As?Short
????????re?=?PLC.Bit_Reset(Handle1,?cmbBitMry.SelectedIndex?+?1,?Val(txtBitAdd.Text))
????????txtReBit.Text?=?re
????End?Sub
End?Class
現(xiàn)在在開發(fā)一個上位機(jī)應(yīng)用程序,使用vs2008中的vb.net開發(fā)基于wince的應(yīng)用程序,實現(xiàn)對串口采集過來的數(shù)據(jù)
這是我配置vs2005的模擬器,你參考一下吧。
1. 在VS2005里新建項目中時,選擇創(chuàng)建Platform builder for CE 6.0的OS Design,新項目可以自
命名,這里命名為“MyEmulator”。
2. 創(chuàng)建MyEmulator的向?qū)е?,BSP一定要選擇“Device Emulator: ARMV4I”,下一步;
3. 模板(Design Templates)選擇“PDA Device”,下一步;
4. 選擇“Mobile Handheld”,下一步;
5. 應(yīng)用程序(Application Media)就隨自己的需要選擇,下一步;
6. 網(wǎng)絡(luò)和通信(Networking Communications)在此只選擇“Local Area Network(LAN)”,下一步;
7. 選擇完成;
8. 選擇Acknowledge;
到此工程建完;
四.添加組件(可以根據(jù)需要添加,這里主要添加漢字相關(guān)的組件)
(1) 添加漢字字庫(這里要記得加入,很多人這里沒有加入,就出現(xiàn)漢字只看到方框的現(xiàn)象):
1. 在Catalog View添加“Core OS”--“CEBASE”--“International”--“Locale Specific support”--“Chinese (Simplified)”--“Fonts”--“SimSun NSimSum(choose 1)”--“SimSun NSimSun”或者“SimSum NSimSun (Subset 2_50)”;
2. 在Catalog View添加“Core OS”--“CEBASE”--“International”--“Locale Specific support”--“Chinese (Simplified)”--“GB18030 Data Vonverter”和“Monotype Imaging AC3 Font Compression”;
(2)添加中文輸入法:
在Catalog View添加“Core OS”--“CEBASE”--“International”--“Locale Specific support”--“Chinese (Simplified)”--“Input Method Editor”--“MSPY 3.0 for Windows Embedded CE”;
(3) VS2005中菜單“項目”--“MyEmulator(項目名)屬性”,配置選擇“所有配置”,配置屬性--“Build Options”,在“Build Options”中去掉“Enable KITL (no IMGNOKITL=1)” (這里如果加入了KITL功能的話,可能在模擬器運(yùn)行的時候,會一直是黑屏的);
(4) “Locale”中,Locales先Clear All,然后選擇“中文(中國)”,Default local選擇“中文(中國)”;
(5) 運(yùn)行VS2005菜單“生成”--“生成MyEmulator”;
五.構(gòu)建SDK:
1. 運(yùn)行VS2005菜單“項目”--“Add New SDK…”,在SDK屬性頁中填寫必要的信息,屬性“Emulation”中Configuration 選擇Debug,可以設(shè)置模擬器的顯示屏大小及色深,還有內(nèi)存大小,在此設(shè)置為240 x 320,16色深,128M內(nèi)存,然后“應(yīng)用”,“確定”。。
2. 然后運(yùn)行VS2005菜單“生成”--“Build All SDK…”,順利的話,就會在%WINCEROOT\OSDesigns\ \MyEmulator\MyEmulator\SDKs\SDK1\MSI\下會有MyEmulator.msi;
六.配置VS2005:
1、先安裝生成好的MyEmulator.msi。運(yùn)行Visual Studio 2005,選擇菜單“工具->選項”,打開選項設(shè)置對話框,從左邊的樹型列表中選擇“設(shè)備工具->設(shè)備”,右邊的下拉列表框拉到底可以看到 “MyEmulator”,這就是剛剛生成的那個模擬器。下面的設(shè)備列表里有兩項,雙擊MyEmulator,設(shè)定傳輸為DMA傳輸,再點擊“仿真器選 項”,在“顯示”選項卡里設(shè)定好模擬器屏幕尺寸,顏色深度等,全部保存。
2、用VS2005新建一個智能設(shè)備項目,向?qū)нx擇平臺時,先刪除Pocket PC 2003,選擇MyEmulator,完成。然后按F5運(yùn)行程序,順利的話定制的模擬器就會出來了(不過這個過程比較慢,需要等待一段時間)。
如何用c語言開發(fā)自己的上位機(jī)軟件
一般開發(fā)上位機(jī)軟件都是帶圖形界面的。C也能做出圖形界面的軟件,但是開發(fā)周期太長也不實用。所以最好還是需要會一些其他語言,例如C++,C#,Java這些做圖形界面開發(fā)周期短的語言。既然會C,那么學(xué)習(xí)其他語言也只是一個熟悉語法的過程。所以很快就能上手,因為語言都是相通的嘛??梢蚤_闊自己的視野去學(xué)習(xí)一下新的語言。不是說只會C有什么弊端,只是想說會的多才會知道語言之間的優(yōu)劣。
誰幫我推薦幾款三軸運(yùn)動控制器,可以示教編程的
EMAC200獨(dú)立式可編程運(yùn)動控制器——4軸
(特點:運(yùn)行速度最快的運(yùn)動控制、功能設(shè)置簡介通過程序內(nèi)部相當(dāng)可以輕松引導(dǎo)客戶完成硬件配置)(今年來在高校運(yùn)用的量增加,所以針對實驗程序的案例比較多,完整系統(tǒng)運(yùn)用程序因為受到此控制器程序保護(hù)功能因素,所以相對要少)
ACR9000獨(dú)立式可編程運(yùn)動控制器——2、4、6、8軸
(特點:功能最全面的運(yùn)動控制、幾乎涵蓋了運(yùn)動控制運(yùn)用中的所以應(yīng)用能力)(在工廠使用的比較多,案例程序比較完整)
PMAC2可編程運(yùn)動控制卡,需要搭載工控機(jī)運(yùn)行
(特點:美國第一款進(jìn)入中國的運(yùn)動控制卡,功能強(qiáng)大但程序設(shè)計復(fù)雜)(這款控制卡運(yùn)用比較早,案例程序繁雜)
獨(dú)立式可編程運(yùn)動控制器是已經(jīng)封裝好了外殼,在內(nèi)部提升了防護(hù)等級,如抗干擾、振動、防塵燈,一般單臺規(guī)格為2、4、6、8軸,需要更多的軸是通過總線外擴(kuò)充一般擴(kuò)展軸速也都能達(dá)到256軸以上。可以脫離電腦通自己的CPU獨(dú)立運(yùn)行,同時可以考慮加裝觸摸屏來監(jiān)視,設(shè)備運(yùn)行情況。
運(yùn)動控制卡(板塊型)通常通過PCI插槽連接到電腦上,工廠一般用工控機(jī)來和運(yùn)動控制卡組合使用,因為工控機(jī)可以提供多個插槽給運(yùn)動控制卡以便擴(kuò)展軸數(shù)。
上位機(jī)軟件開發(fā)案例的介紹就聊到這里吧,感謝你花時間閱讀本站內(nèi)容,更多關(guān)于上位機(jī)軟件開發(fā)是什么意思、上位機(jī)軟件開發(fā)案例的信息別忘了在本站進(jìn)行查找喔。