www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當(dāng)前位置:首頁 > 模擬 > 模擬
[導(dǎo)讀]什么是上位機(jī) 上位機(jī)是一臺(tái)可以發(fā)出特定操控命令的計(jì)算機(jī),通過操作預(yù)先設(shè)定好的命令,將命令傳遞給下位機(jī),通過下位機(jī)來控制設(shè)備完成各項(xiàng)操作(應(yīng)用最多的地方如:工業(yè)、水利、供電部門、交通等方面)。上位機(jī)都有

什么是上位機(jī)
上位機(jī)是一臺(tái)可以發(fā)出特定操控命令的計(jì)算機(jī),通過操作預(yù)先設(shè)定好的命令,將命令傳遞給下位機(jī),通過下位機(jī)來控制設(shè)備完成各項(xiàng)操作(應(yīng)用最多的地方如:工業(yè)、水利、供電部門、交通等方面)。上位機(jī)都有特定的編程,有專門的開發(fā)系統(tǒng),或以上是已經(jīng)規(guī)定好任務(wù),只能按特定的任務(wù)進(jìn)行操作。簡(jiǎn)單說上位機(jī)就是命令的下達(dá)者,而下位機(jī)則是命令的執(zhí)行者。

上位機(jī)軟件介紹
下面介紹一種軟件:物聯(lián)網(wǎng)應(yīng)用中收集感知節(jié)點(diǎn)信息,進(jìn)行顯示,控制的應(yīng)用控制臺(tái)。此軟件主要有兩部分組成,數(shù)據(jù)收發(fā)部分和顯示部分
1、上位機(jī)在系統(tǒng)中的位置:處于網(wǎng)絡(luò)層中,與嵌入式網(wǎng)關(guān)通過網(wǎng)線相連。實(shí)際應(yīng)用時(shí)是放置在實(shí)驗(yàn)室的老師工作臺(tái)上,供實(shí)驗(yàn)室的老師使用。
2、上位機(jī)的功能:此軟件實(shí)時(shí)監(jiān)視實(shí)驗(yàn)實(shí)中每個(gè)實(shí)驗(yàn)臺(tái)的狀況,包括上電或斷電狀態(tài),實(shí)驗(yàn)臺(tái)是否發(fā)出了警告,是否發(fā)出了求助信號(hào),并對(duì)這些信號(hào)做出應(yīng)答,還控制LED屏的文字顯示。
3、上位機(jī)的設(shè)計(jì)實(shí)現(xiàn): 此軟件主要有兩部分組成,數(shù)據(jù)收發(fā)部分和顯示部分。數(shù)據(jù)收發(fā)指的是和嵌入式網(wǎng)關(guān)的數(shù)據(jù)收發(fā)。兩者是通過網(wǎng)線連接的,所以應(yīng)用的是TCP/IP 的Socket 套接字編程,嵌入式網(wǎng)關(guān)的設(shè)計(jì)中已經(jīng)提到過,它在和上位機(jī)通信中是作為服務(wù)器的,那么上位機(jī)就是作為連接發(fā)起方。為了能保證網(wǎng)絡(luò)連接的穩(wěn)定性,我們把Socket讀寫的程序代碼放在了try{} catch(){} 塊中,一旦網(wǎng)絡(luò)連接不正常,就會(huì)捕獲到該異常,從而關(guān)閉程序。
4、關(guān)鍵代碼如下:
private void ReadFromArm()
        {
            byte[] buffertocheck = new byte[1];
            int bytesize = 0;
            do
            {
                byte[] bufferofread = new byte[1024];
                try { bytesize = stream.Read(bufferofread, 0, bufferofread.Length); }
                catch (Exception ex) { connection = Indicator.Unconnected; MessageBox.Show("連接中斷,程序?qū)⑼顺觥?quot;);  Application.Exit(); read.Abort(); }
                //MessageBox.Show(BitConverter.ToString(bufferofread));
                byte[] buffertochecktemp = buffertocheck;
                buffertocheck = new byte[buffertochecktemp.Length + bytesize];
                Array.Copy(buffertochecktemp, 0, buffertocheck, 0, buffertochecktemp.Length);
                Array.Copy(bufferofread, 0, buffertocheck, buffertochecktemp.Length, bytesize);
                int index_1, index_2;
                while (Check7E(buffertocheck, out index_1, out index_2))
                {
                    byte[] buffertodecode = new byte[index_2 + 1 - index_1];
                    Array.Copy(buffertocheck, index_1, buffertodecode, 0, index_2 + 1 - index_1);
                    byte[] bufferofdecode = PPP.Decode(buffertodecode);
                    //MessageBox.Show(BitConverter.ToString(bufferofdecode));
                    if (bufferofdecode[0] == bufferofdecode.Length && CheckSum(bufferofdecode))//保證從ARM來的幀是正確的
                    {
                        byte[] Zuohao = new byte[2];
                        int subindex = 1, index = bufferofdecode[1]*256+bufferofdecode[2]-1;
                        string status=null;
                        switch (bufferofdecode[3])//分別處理從ARM來的幀
                        {

                            case POWER_ON://從ARM來的上電狀態(tài)
                                status = "上電";
                                subindex = 1;
                                break;
                            case POWER_OFF://從ARM來的斷電狀態(tài)
                                status = "斷電";
                                subindex = 1;
                                break;
                            case ABNORMAL://從ARM來的異常狀態(tài)
                                status = "異常";
                                subindex = 1;
                                break;
                            case WARNING://從ARM來的警告信號(hào)
                                status = "有";
                                subindex = 2;
                                break;
                            case NEED_HELP://從ARM來的求救信號(hào)
                                status = "有";
                                subindex = 3;
                                break;
                        }
                        if (0 <= index && index <= 49)
                        {
                            listView1.Items[index].SubItems[subindex].Text = status;
                            if (status == "異常" || status == "有")
                                listView1.Items[index].SubItems[subindex].ForeColor = Color.Red;
                            else
                                listView1.Items[index].SubItems[subindex].ForeColor = Color.Black;
                        }
                    }
                    int newlength = buffertocheck.Length - 1 - index_2;
                    if (newlength == 0)
                    {
                        buffertocheck = new byte[1];
                    }
                    else
                    {
                        buffertochecktemp = buffertocheck;
                        buffertocheck = new byte[newlength];
                        Array.Copy(buffertochecktemp, index_2 + 1, buffertocheck, 0, newlength);
                    }
                }
            } while (connection == Indicator.Connected);
        }
        /// <summary>
        /// 向ARM發(fā)送
        /// </summary>
        /// <param name="Zuohao">座號(hào) 2字節(jié)</param>
        /// <param name="mingling">命令字 1字節(jié)</param>
        public void WriteToArm(byte[] Zuohao, byte mingling)
        {
            if (connection == Indicator.Connected)//在與ARM保持連接的情況下可寫
            {
                byte[] frame = new byte[5];
                frame[0] = 0x05;
                Array.Copy(Zuohao, 0, frame, 1, 2);
                frame[3] = mingling;
                byte temp = 0;
                foreach (byte item in frame)
                    temp += item;
                frame[4] = (byte)(0 - temp);
                byte[] frametosend = PPP.Encode(frame);
                Console.WriteLine(BitConverter.ToString(frametosend));
                try { stream.Write(frametosend, 0, frametosend.Length); }
                catch (Exception ex) { }
            }
        }
        /// <summary>
        /// 向ARM發(fā)送
        /// </summary>
        /// <param name="Zuohao">座號(hào) 2字節(jié)</param>
        /// <param name="mingling">命令字加ASC碼 n字節(jié)</param>
        public void WriteToArm(byte[] Zuohao, byte[] minglingandASC)
        {
            if (connection == Indicator.Connected)//在與ARM保持連接的情況下可寫
            {
                byte[] frame = new byte[4+minglingandASC.Length];
                frame[0] = (byte)frame.Length;
                Array.Copy(Zuohao, 0, frame, 1, 2);
                Array.Copy(minglingandASC,0,frame,3,minglingandASC.Length);
                byte temp = 0;
                foreach (byte item in frame)
                    temp += item;
                frame[frame.Length-1] = (byte)(0 - temp);
                byte[] frametosend = PPP.Encode(frame);
                Console.WriteLine(BitConverter.ToString(frametosend));
                try { stream.Write(frametosend, 0, frametosend.Length); }
                catch (Exception ex) { }
            }
        }

另外數(shù)據(jù)收發(fā)還需要協(xié)議,和嵌入式網(wǎng)關(guān)通信的指令和協(xié)議定制如下:



因此數(shù)據(jù)量較少,協(xié)議也就比較簡(jiǎn)單,此協(xié)議在發(fā)送接收時(shí)用PPP封裝。顯示部分使用C#編寫的運(yùn)行于Windows .Net Framework 上的窗體應(yīng)用程序,根據(jù)實(shí)際需求,對(duì)每個(gè)實(shí)驗(yàn)臺(tái)狀態(tài)的顯示使用ListView控件實(shí)現(xiàn),當(dāng)出現(xiàn)異常情況,或?qū)嶒?yàn)臺(tái)出現(xiàn)警告、求助信號(hào)時(shí),ListView的相應(yīng)字段文字會(huì)通過改變顏色來提醒監(jiān)視人員,監(jiān)視人員還可以通過一個(gè)文字發(fā)送窗體來向LED屏發(fā)送要顯示的文字。總之界面清晰直觀,簡(jiǎn)便易用。
 

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

武漢2025年9月9日 /美通社/ -- 7月24日,2025慧聰跨業(yè)品牌巡展——湖北?武漢站在武漢中南花園酒店隆重舉辦!本次巡展由慧聰安防網(wǎng)、慧聰物聯(lián)網(wǎng)、慧聰音響燈光網(wǎng)、慧聰LED屏網(wǎng)、慧聰教育網(wǎng)聯(lián)合主辦,吸引了安防、...

關(guān)鍵字: AI 希捷 BSP 平板

上海2025年9月9日 /美通社/ -- 9月8日,移遠(yuǎn)通信宣布,其自研藍(lán)牙協(xié)議棧DynaBlue率先通過藍(lán)牙技術(shù)聯(lián)盟(SIG)BQB 6.1標(biāo)準(zhǔn)認(rèn)證。作為移遠(yuǎn)深耕短距離通信...

關(guān)鍵字: 藍(lán)牙協(xié)議棧 移遠(yuǎn)通信 COM BSP

上海2025年9月9日 /美通社/ -- 為全面落實(shí)黨中央、國(guó)務(wù)院和上海市委、市政府關(guān)于加快發(fā)展人力資源服務(wù)業(yè)的決策部署,更好發(fā)揮人力資源服務(wù)業(yè)賦能百業(yè)作用,8月29日,以"AI智領(lǐng) HR智鏈 靜候你來&quo...

關(guān)鍵字: 智能體 AI BSP 人工智能

北京2025年9月8日 /美通社/ -- 近日,易生支付與一汽出行達(dá)成合作,為其自主研發(fā)的"旗馭車管"車輛運(yùn)營(yíng)管理平臺(tái)提供全流程支付通道及技術(shù)支持。此次合作不僅提升了平臺(tái)對(duì)百余家企業(yè)客戶的運(yùn)營(yíng)管理效率...

關(guān)鍵字: 一汽 智能化 BSP SAAS

深圳2025年9月8日 /美通社/ -- 晶泰科技(2228.HK)今日宣布,由其助力智擎生技制藥(PharmaEngine, Inc.)發(fā)現(xiàn)的新一代PRMT5抑制劑PEP0...

關(guān)鍵字: 泰科 AI MT BSP

上海2025年9月5日 /美通社/ -- 由上海市經(jīng)濟(jì)和信息化委員會(huì)、上海市發(fā)展和改革委員會(huì)、上海市商務(wù)委員會(huì)、上海市教育委員會(huì)、上海市科學(xué)技術(shù)委員會(huì)指導(dǎo),東浩蘭生(集團(tuán))有限公司主辦,東浩蘭生會(huì)展集團(tuán)上海工業(yè)商務(wù)展覽有...

關(guān)鍵字: 電子 BSP 芯片 自動(dòng)駕駛

推進(jìn)卓越制造,擴(kuò)大產(chǎn)能并優(yōu)化布局 蘇州2025年9月5日 /美通社/ --?耐世特汽車系統(tǒng)與蘇州工業(yè)園區(qū)管委會(huì)正式簽署備忘錄,以設(shè)立耐世特亞太總部蘇州智能制造項(xiàng)目。...

關(guān)鍵字: 智能制造 BSP 汽車系統(tǒng) 線控

慕尼黑和北京2025年9月4日 /美通社/ -- 寶馬集團(tuán)宣布,新世代首款量產(chǎn)車型BMW iX3將于9月5日全球首發(fā),9月8日震撼亮相慕尼黑車展。中國(guó)專屬版車型也將在年內(nèi)與大家見面,2026年在國(guó)內(nèi)投產(chǎn)。 寶馬集團(tuán)董事...

關(guān)鍵字: 寶馬 慕尼黑 BSP 數(shù)字化

北京2025年9月4日 /美通社/ --?在全球新一輪科技革命與產(chǎn)業(yè)變革的澎湃浪潮中,人工智能作為引領(lǐng)創(chuàng)新的核心驅(qū)動(dòng)力,正以前所未有的深度與廣度重塑各行業(yè)發(fā)展格局。體育領(lǐng)域深度融入科技變革浪潮,駛?cè)霐?shù)字化、智能化轉(zhuǎn)型快車...

關(guān)鍵字: 人工智能 智能體 AI BSP

上海2025年9月2日 /美通社/ -- 近日,由 ABB、Moxa(摩莎科技)等八家企業(yè)在上海聯(lián)合發(fā)起并成功舉辦"2025 Ethernet-APL 技術(shù)應(yīng)用發(fā)展大會(huì)"。會(huì)議以"破界?融合...

關(guān)鍵字: ETHERNET 智能未來 BSP 工業(yè)通信
關(guān)閉