水多多-午夜视频网-成人黄色免费视频-一级特黄毛片-亚洲精品第一-狠狠狠狠狠-www.黄色在线-亚洲91av-777久久久-自拍偷拍校园春色-日本色中色-香蕉av网站-超在线视频-日本啪啪网-手机在线成人

18621383605

上海市寶山區(qū)富聯(lián)一路98號6棟

側(cè)邊懸浮
主頁 > 新聞動態(tài) > 行業(yè)新聞

上位機C#通過TCPIP和庫卡機器人通訊

2020-02-14 17:24:08

上位機C#通過TCPIP和庫卡機器人通訊

注:本文章文字、圖片部分來自網(wǎng)絡(luò)
版權(quán)歸原作者,侵刪。
您是否對將工業(yè)自動化集成到您的設(shè)施中感興趣?如果是這樣,那么您應(yīng)該致電工業(yè)自動化和集成領(lǐng)域的領(lǐng)導(dǎo)者工博士。工博士是包括FANUC,Yaskawa,KUKA,KawasakiABB在內(nèi)的多家不同機器人公司的認(rèn)證集成商。我們的員工致力于幫助您為您的行業(yè)和預(yù)算構(gòu)建和定制完美的自動化系統(tǒng)。
因為本文不是介紹該軟件的安裝,所以就不多做解釋,下面的內(nèi)容默認(rèn)已經(jīng)能用自帶的測試軟件獲取庫卡機器人發(fā)送過來的數(shù)據(jù)。在此基礎(chǔ)上,我來說一下c#利用tcp/ip是如何跟庫卡機器人進(jìn)行通訊的.
 
首先當(dāng)然是TCP/IP的基礎(chǔ)部分,服務(wù)器和客戶端。這里將庫卡機器人作為客戶端,上位機作為服務(wù)器進(jìn)行通訊。
 
private void button1_Click(object sender, EventArgs e)
        {
            OpenTCP();
        }
        /// <summary>
        /// TCP放在后臺線程
        /// </summary>
        private void OpenTCP()
        {
            //新建一個委托線程
            ThreadStart myThreadDelegate = new ThreadStart(Listen);
            //實例化新線程
            myThread = new Thread(myThreadDelegate);
            myThread.Start();
 
 
        }
        /// <summary>
        /// 創(chuàng)建TCP服務(wù)端并監(jiān)聽
        /// </summary>
        public void Listen()//創(chuàng)建tcp服務(wù)端
        {   //設(shè)置端口
            setPort = 59152;
            //初始化SOCKET實例
            newsock = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
            //允許SOCKET被綁定在已使用的地址上。
            newsock.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, true);
            //初始化終結(jié)點實例
            localEP = new IPEndPoint(IPAddress.Parse("172.31.1.250"), setPort);
            try
            {
                _sessionTable = new Hashtable(53);
                //綁定
                newsock.Bind(localEP);
                //監(jiān)聽
                newsock.Listen(10);
                //開始接受連接,異步。=
                newsock.BeginAccept(new AsyncCallback(OnConnectRequest), newsock);
            }
            catch (Exception ex)
            {
 
            }
 
        }
        /// <summary>
        /// 客戶端連接
        /// </summary>
        /// <param name="ar"></param>
        public void OnConnectRequest(IAsyncResult ar)
        {
            //初始化一個SOCKET,用于其它客戶端的連接
 
            server1 = (Socket)ar.AsyncState;
            Client[theIndex] = server1.EndAccept(ar);
            DateTimeOffset now = DateTimeOffset.Now;
            Byte[] byteDateLine = new Byte[65534];
            remote = Client[theIndex].RemoteEndPoint;
            //把連接成功的客戶端的SOCKET實例放入哈希表
            _sessionTable.Add(Client[theIndex].RemoteEndPoint, null);
 
            //等待新的客戶端連接
            theListClient[theIndex, 0] = Client[theIndex].RemoteEndPoint.ToString();
            theListClient[theIndex, 1] = "1";
            server1.BeginAccept(new AsyncCallback(OnConnectRequest), server1);
            theIndex++;
            int myIndex = theIndex - 1;
            while (true)
            {
                try
                {
                    if (theListClient[myIndex, 1] == "0") return;
                    Thread.Sleep(150);
                    int recv = Client[myIndex].Receive(byteDateLine);
 
                    string stringdata = Encoding.UTF8.GetString(byteDateLine, 0, recv);
 
                    string ip = Client[myIndex].RemoteEndPoint.ToString();
 
                    //接受到客戶端消息
                    if (stringdata != "")
                    {
                        MessageBox.Show(stringdata);
                    }
                    //顯示客戶端發(fā)送過來的信息
 
                }
                catch (Exception ex)
                {
                    //從列表中移除通訊失敗的客戶端
                    string ip = Client[myIndex].RemoteEndPoint.ToString();
                    _sessionTable.Remove(Client[myIndex].RemoteEndPoint);
                    for (int i = 0; i < 256; i++)
                    {
                        if (Client[myIndex].RemoteEndPoint.ToString() == theListClient[i, 0]) theListClient[i, 1] = "0";
                    }
                    break;
                }
            }
 
        }
通過按鈕事件,創(chuàng)建后臺線程用于TCP服務(wù)端,創(chuàng)建服務(wù)端并開啟監(jiān)聽后,就可以等待機器人客戶端發(fā)來的消息了。
 
 庫卡機器人TCP通訊存在三種數(shù)據(jù)發(fā)送格式:固定長度字節(jié),任意長度字節(jié),和xml格式。個人感覺xml格式比較好用,這里介紹xml的通訊。
 
xml的通訊,其實可以分解為幾個步驟:
 
機器人發(fā)送到上位機:機器人程序?qū)⒆兞炕蛘邤?shù)值寫入xml的元素中→機器人將xml發(fā)送通過服務(wù)端發(fā)送到上位機的服務(wù)端→服務(wù)端接受到數(shù)據(jù),按照xml的格式解析其中元素。
 
RET=EKI_Init("XmlCallBack")//初始化xml文件
RET=EKI_Open("XmlCallBack")//打開(相當(dāng)于客戶端請求連接)
//將變量或值寫入到xml文件的元素中
;FOLD Write data to connection
  ; Write frame to <LastPos X="" Y="" Z="" A="" B="" C="" />
  RET=EKI_SetFrame("XmlCallBack","Robot/Data/LastPos", TOOL_DATA[1])
  ; Write real to <ActPos X="" />
  RET=EKI_SetReal("XmlCallBack","Robot/Data/ActPos/@X", 1000.12)
  ; Write int to <Status></Status>
  RET=EKI_SetInt("XmlCallBack","Robot/Status", 12345678)
  ; Write string to <Mode></Mode>
  RET=EKI_SetString("XmlCallBack","Robot/Mode","ConnectSensor")
  ; Write bool to <LightOn></LightOn>
  RET=EKI_SetBool("XmlCallBack","Robot/RobotLamp/GrenLamp/LightOn",true)
;ENDFOLD (Write data to connection)
//發(fā)送xml到服務(wù)端
RET = EKI_Send("XmlCallBack","Robot")
上位機服務(wù)端獲取到的數(shù)據(jù)是:
 
<Robot><Data><LastPos X="483.980011" Y="7.210000" Z="239.869995" A="0.000000" B="0.000000" C="0.000000"></LastPos><ActPos X="1000.119995"></ActPos></Data><Status>12345678</Status><Mode>ConnectSensor</Mode><RobotLamp><GrenLamp><LightOn>1</LightOn></GrenLamp></RobotLamp></Robot>
然后對數(shù)據(jù)進(jìn)行逐個元素的解析就可以了。要增加變量,只要對應(yīng)在mxl文件,機器人程序和上位機解析過程中添加就可以了。
 
上位機發(fā)送到機器人:上位機將變量寫成xml格式,利用客戶端發(fā)送到機器人中的xml文件→機器人讀取xml文件中的元素值到程序中的變量
 
寫成xml格式:
 
sendstr = sendstr + "<Sensor><Status><IsActive>FALSE</IsActive></Status></Sensor>";
sendstr = sendstr + "<Sensor><Read><xyzabc X='10.0' Y='20.0' Z='30.0' A='40.0' B='50.0' C='60.0'></xyzabc></Read</Sensor>";
 
然后是tcp發(fā)送
 
/// <summary>
        /// 將字符串發(fā)送給機器人
        /// </summary>
        /// <param name="str"></param>
        private void sendToRobot(string str)
        {
            string sendstr;
            str = str.Replace(" ", "");
            string[] fields = str.Split(',');
            string header = "<Sensor>", tail = "</Sensor>";//變量xml文件中的父元素
 
            sendstr = header;
            //設(shè)置xml文件中變量的值,格式:<變量名>變量值</變量名>
            foreach (string item in fields)
            {
                string[] arr = item.Split('=');
                sendstr += "<" + arr[0] + ">" + arr[1] + "</" + arr[0] + ">";
            }
            sendstr += tail;
            //這些變量的某些中間父元素與前面的不同,所以另外寫
            sendstr = sendstr + "<Sensor><Status><IsActive>FALSE</IsActive></Status></Sensor>";
            sendstr = sendstr + "<Sensor><Read><xyzabc X='10.0' Y='20.0' Z='30.0' A='40.0' B='50.0' C='60.0'></xyzabc></Read></Sensor>";
            string strDataLine = sendstr;
            try
            {
                Byte[] sendData = Encoding.UTF8.GetBytes(strDataLine);
 
                foreach (DictionaryEntry de in _sessionTable)
                {
                    EndPoint temp = (EndPoint)de.Key;
                    {
                        for (int i = 0; i < theIndex; i++)
                        {
                            if (theListClient[i, 1] == "1")
                            {
                                if (temp.ToString() == theListClient[i, 0])
                                {
                                    try
                                    {
                                        Client[i].SendTo(sendData, temp);
                                    }
                                    catch (Exception ex)
                                    {
                                        
                                    }
                                }
                            }
                        }
                    }
                }
            }
            catch
            { }
        }
等發(fā)送完成之后,機器人再讀取
 
機器人從xml元素中讀取值或者屬性并賦予創(chuàng)建的變量
  RET=EKI_GetString("XmlCallBack","Sensor/Message",valueChar[])
  RET=EKI_GetInt("XmlCallBack","Sensor/Nmb",valueInt)
  RET=EKI_GetBool("XmlCallBack","Sensor/Status/IsActive" ,valueBOOL)
  RET=EKI_GetFrame("XmlCallBack","Sensor/Read/xyzabc",valueFrame)
然后就可以在機器人程序中使用,或者通過查看變量值檢測是否正確
 
本例中的xml文件和機器人程序文件src由ETHERNETKRL軟件中自帶的測試?yán)有薷亩鴣?。不用原例子的原因是,原例子只有程序文件src而沒有數(shù)據(jù)文件dat,程序里的變量都是臨時變量,無法在示教器上查詢變量的值。所以新建了一個程序,將原例子的變量定義放在dat數(shù)據(jù)文件中,處理過程放在src程序文件中。另外,對上位機發(fā)送到機器人的元素有做一些刪改。
————————————————
版權(quán)聲明:本文為CSDN博主「千年de小妖」的原創(chuàng)文章,
原文鏈接:https://blog.csdn.net/qq_29221215/article/details/95759479
在此處聯(lián)系我們或致電186-1656-9600與我們聯(lián)系,以獲取有關(guān)庫卡機器人解決方案和快速簡便的報價。
了解更多:庫卡機器人

日韩黄色片 | 国产www在线观看 | av大片在线观看 | 日本白嫩bbw内谢 | 久久成人在线视频 | 亚洲精品久久久久久 | 午夜久久久久久久久久影院 | 国产成人一区二区三区影院在线 | 老司机午夜免费精品视频 | www.黄在线观看 | 日韩精品人妻中文字幕有码 | 婷婷中文字幕 | 日韩大片在线 | 永久福利视频 | 91在线资源 | 少妇一级淫片免费 | 免费黄色网址在线观看 | 日韩精品一区二区三区四区 | 免费性片 | 佐山爱在线视频 | 一级片免费在线播放 | 久久激情网站 | 秋霞成人午夜伦在线观看 | 福利视频网站 | 美女黄视频在线观看 | 欧美人与性动交ccoo | 成人午夜免费在线观看 | 免费高清av| 视频二区在线 | 神宫寺奈绪一区二区三区 | 日韩诱惑 | 看一级片 | 亚洲视频一区二区在线观看 | 国产尤物在线观看 | 一出一进一爽一粗一大视频 | 在线观看污污视频 | 爆乳熟妇一区二区三区 | 自拍超碰在线 | 久久免费看 | 国产一级免费观看 | 国产国语老龄妇女a片 | 操女人免费视频 | 国产偷人妻精品一区 | 黑鬼巨鞭白妞冒白浆 | 久久福利视频导航 | 国产曰肥老太婆无遮挡 | 97视频在线免费观看 | 精品一二三 | 国产欧美又粗又猛又爽 | 国产精品日日摸天天碰 | 精品在线一区二区 | 风流少妇按摩来高潮 | 午夜免费av | 青娱乐国产精品 | 经典杯子蛋糕日剧在线观看免费 | 熟女俱乐部一区二区视频在线 | 欧美另类亚洲 | 四虎免费网址 | av无码精品一区二区三区宅噜噜 | 不用播放器的av | 国产人成 | 99免费精品视频 | 日本黄色大片在线观看 | 日本在线免费看 | 国产女同在线观看 | 致单身男女免费观看完整版 | 国产精品久久av | 成人短视频在线免费观看 | 中文字幕在线免费观看 | 国产激情综合 | 亚洲精品女人久久久 | 日日射夜夜操 | 日韩激情一区二区三区 | 成人毛片18女人毛片免费 | 色亚洲视频 | 亚洲射射 | 99热国内精品 | 国产精品成人免费精品自在线观看 | 牛牛影视免费观看 | 99久久久国产精品无码网爆 | 亚洲国产高清国产精品 | 中文字幕av无码一区二区三区 | 国产又粗又猛又爽视频 | 巨物撞击尤物少妇呻吟 | 91挑色| 综合影院 | 在线免费观看a视频 | 天天操天天操 | 成年人观看视频 | 日韩久草 | 污网站免费观看 | 日韩黄色av| 国产jzjzjz丝袜老师水多 | 中文字幕一区二区三区在线播放 | 日韩美女免费视频 | 三级三级久久三级久久18 | 亚洲柠檬福利资源导航 | 天天操天天操天天操天天操 | 中文字幕中文字幕 | 亚洲做受高潮 | 免费国产视频 | 美国三级视频 | 黄色片免费观看视频 | 午夜爽爽爽 | 黄色一级视频在线观看 | 熟妇的味道hd中文字幕 | 国产日韩欧美自拍 | 老司机福利av | 老太太av | 91麻豆国产视频 | 中文字幕一区二区三区四区欧美 | 一区在线观看 | 未满十八18禁止免费无码网站 | 国产第一页在线观看 | 日韩一级在线视频 | gai免费观看网站 | 粉嫩导航 | 四虎成人精品永久免费av九九 | 波多野结衣激情视频 | 日本在线视频观看 | 人妻激情偷乱视频一区二区三区 | 美日韩一区 | 五月天色丁香 | 国产精品v欧美精品v日韩 | 成人在线激情视频 | 中文字幕乱伦视频 | 日产毛片 | 波多野结衣中文字幕久久 | 可以在线观看的av网站 | 日欧美女人 | 国产又粗又猛又色 | 综合色视频 | 国产在线视频网站 | 中文不卡视频 | 天天爽夜夜爽视频 | 意大利少妇愉情理伦片 | 成人精品视频在线 | 欧美日韩国产精品一区 | 精人妻一区二区三区 | 一区二区视频在线 | 日本一区二区在线 | 美女黄视频在线观看 | 一级黄色视屏 | 韩国美女毛片 | 成人动漫av | 逼特逼在线视频 | 中文字幕中文字幕一区 | www.日韩.com | 国产成人免费网站 | 亚洲性图第一页 | 白浆导航| 日本午夜啪啪 | 综合激情久久 | av网站在线免费观看 | 97视频网站| 最近最新中文字幕 | 亚洲1234区| 国产免费不卡视频 | 午夜在线精品 | 中文字幕偷拍 | 午夜影院试看 | 一区二区三区有限公司 | 人人妻人人澡人人爽国产一区 | 狠狠撸在线视频 | 日本视频www色 | 国产女人在线视频 | 中文在线观看免费网站 | 国产精品99在线观看 | 开心激情五月婷婷 | 日韩在线天堂 | 草莓污视频在线观看 | 草草免费视频 | 亚洲国产精品久久久久久久 | 中文欧美日韩 | 91蜜桃婷婷狠狠久久综合9色 | 亚洲欧美国产高清va在线播放 | 久久久精品网 | 久久青青草视频 | 国产一极片 | 噜噜噜色 | 欧美高清不卡 | 中文字幕高清av | 久久理论电影 | 国产盗摄一区二区三区在线 | 中文字幕观看在线 | 久久精品一区二区三区不卡牛牛 | 欧美日韩一区二区区 | 亚洲成人看片 | 美日韩精品视频 | 97久久久久久 | 桃色在线视频 | 色婷婷久久久亚洲一区二区三区 | 一区二区三区日韩欧美 | 日本熟妇色xxxxx日本免费看 | 娇妻张妍交换高潮 | 午夜激情网站 | 精品动漫一区二区三区的观看方式 | 午夜快播| 日韩在线视频二区 | 成人av网站在线 | 激情噜噜 | 在线观看成人小视频 | free性丰满69性欧美 | 成年人免费看的视频 | 999视频在线观看 | 美女试爆场恐怖电影在线观看 | 亚洲精品白浆高清久久久久久 | 人妻精品一区二区三区 | 欧美黄色性视频 | 少妇紧身牛仔裤裤啪啪 | 国产成人精品一区 | 91超薄丝袜肉丝一区二区 | 日本调教电影 | 中文字幕一区二区人妻痴汉电车 | 日韩福利一区二区 | 清清草免费视频 | 精品香蕉视频 | 成人h动漫在线 | 玩弄人妻少妇500系列 | 国产免费一级视频 | 国外精品视频 | 国产午夜精品一区二区 | 国产精品黄色片 | 久草视频中文在线 | 日韩精品成人一区二区在线 | 一级黄色网址 | 日韩在线观看不卡 | 四川丰满少妇被弄到高潮 | 婷婷色一区二区三区 | 久久人人爽人人爽人人片 | 日本电影中文字幕 | 国产精品6 | 国产成人一区二区三区电影 | gogogo高清国语完整 | va在线观看 | 婷婷综合色 | 噜噜噜在线 | 天天插插插 | 国产情侣一区二区 | a级在线播放 | 91大神在线观看视频 | 超碰极品 | 在线观看免费大片 | 色噜噜狠狠一区二区三区 | 无码人妻aⅴ一区二区三区玉蒲团 | 久久久久噜噜噜亚洲熟女综合 | 久久两性视频 | 亚洲精品乱码久久久久久日本蜜臀 | 欧美人妻一区二区 | 久久无码人妻精品一区二区三区 | 国产伦精品一区二区三区 | 亚洲最大在线 | 丰满少妇一区 | 黄色成年视频 | 美女又黄又爽 | 91精选视频 | 18无套直看片红桃 | 国产精品一级二级三级 | 夜夜操操 | 欧美日韩黄色 | 俺来也av | 一区二区三区欧美视频 | 爱操影院| 午夜tv影院 | 日本一区二区网站 | 成人亚洲一区二区 | 欧美va| 特黄1级潘金莲 | 麻豆传媒观看 | 欧美成人一区二区三区 | 成人黄色电影在线 | 国产中文字幕一区 | 自拍偷拍在线播放 | 挪威的森林在线观看 | 久久久成人精品 | 四虎影院永久地址 | 国产成人无码aa精品一区 | 中文无码av一区二区三区 | 亚洲一区二区影院 | 在线观看网站黄 | 一级片在线免费 | 韩国成人免费视频 | 精品久久久久久久久久久久久 | 亚洲天堂区 | 麻豆精品在线 | 欧美精品一区二区在线播放 | sm调教母狗 | 五月婷综合| www.午夜视频 | 91精品久久久久久综合五月天 | 在线精品亚洲欧美日韩国产 | 91色视频在线观看 | 国产精品久久久国产盗摄 | 午夜伦情 | 久久网站视频 | 高清一级片 | 最新国产在线 | 欧美精品18 | 青娱乐精品视频 | 午夜动态图 | 久久精品一 | 亚洲国产一区二区三区 | 日韩av电影在线免费观看 | 在线免费观看一区二区三区 | 久久国产一区二区三区 | 久久av片 | 久久久久无码精品 | 69国产精品视频免费观看 | 超碰97人人在线 | 97在线视频人妻无码 | 少妇高潮灌满白浆毛片免费看 | a级一级片 | 免费古装一级淫片潘金莲 | 中国黄色片视频 | 欧美视频免费看 | 国产一级特黄毛片 | 久久久极品 | 天海翼av在线| 伊人伦理 | 在线看片亚洲 | 成人av电影在线播放 | 摸bbb搡bbb搡bbbb | 玖玖视频在线 | 天天操天天操天天 | 九月色婷婷 | 美女网站视频在线观看 | 国产欧美视频在线观看 | www视频在线免费观看 | 国产精品少妇 | 乱日视频| 男受被做哭激烈娇喘gv视频 | 91福利免费| 国产成人精品一区二区 | 亚洲视频观看 | 精品一区二区三区免费观看 | 美女极度色诱图片www视频 | 日本不卡在线视频 | www.黄色网址.com | 加勒比色综合 | 99热免费精品 |