水多多-午夜视频网-成人黄色免费视频-一级特黄毛片-亚洲精品第一-狠狠狠狠狠-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)庫卡機器人解決方案和快速簡便的報價。
了解更多:庫卡機器人

日本高清视频免费看 | 91精品国产麻豆国产自产在线 | 婷婷爱爱 | 97在线看| 国产真实乱人偷精品人妻 | 天天射天天干 | 一区二区三区四区视频在线观看 | 欧洲一区二区三区 | 少妇一xx88av | free性丰满69性欧美 | 999免费视频 | 超碰成人福利 | 日本3p视频 | 一区二区三区免费观看视频 | 欧美精品一二三区 | 揉我啊嗯~喷水了h视频 | 亚洲中文无码av在线 | 制服丝袜中文 | 日皮视频网站 | 亚洲影库 | 午夜亚洲福利在线老司机 | 一区二区三区视频在线 | 久久亚洲天堂 | 中文在线第一页 | 91免费网站入口 | 98国产视频 | 亚洲a网| 噼里啪啦免费高清看 | 国产黄色一级片 | 亚洲永久免费视频 | xxx日本少妇 | 伊人超碰 | 欲色淫香| 丁香在线视频 | 三级网站免费 | 黄色一级在线观看 | 久久黄色免费网站 | 岛国av网址| 91视频成人| 国产96视频 | 国产精品1234 | 国产精自产拍久久久久久蜜 | 国产经典三级 | 日本在线网址 | 伊大人香伊大人香蕉在线视频 t.tui9.xyz | 黄色三级三级三级 | 法国空姐在线观看完整版 | 日韩欧美激情在线 | 超碰在线看 | 午夜寂寞影视 | 国产精品你懂的 | 美女三区 | 不卡一区二区在线观看 | 国产一区二三区 | 国产视频a | 在线免费av观看 | 久久精品不卡 | 瑟瑟视频免费看 | 成人免费网站在线观看 | 免费99精品国产自在在线 | 国产福利免费视频 | 一本色道综合久久欧美日韩精品 | 成人动漫在线视频 | 国产黄大片 | 午夜理伦三级理论 | 日本午夜视频在线观看 | 亚洲天堂视频在线 | 最新中文字幕av专区 | 亚洲国产成人精品女人久久久 | 大色网小色网 | 成人在线播放av | 青青草一区二区 | 人妻在线日韩免费视频 | 伊人青青草原 | 国产成人免费在线观看 | 97精品在线观看 | 香蕉人人精品 | 免费在线观看一区二区三区 | 国产精品无码粉嫩小泬 | 久久久久无码国产精品一区李宗瑞 | 性爱视频在线免费 | 91网址在线 | 国产 欧美 在线 | 亚洲天堂久久久 | 变态另类丨国产精品 | 亚洲欧美久久久 | 欧美精品一区二区在线观看 | 欧美日韩在线观看视频 | 国产国语亲子伦亲子 | 女生的胸无遮挡 | 福利电影在线播放 | 欧美日韩国产中文字幕 | 97国产精品| 天天天天躁天天爱天天碰2018 | 国产午夜久久久 | 国产专区一区 | 日韩久久影院 | 欧美日韩激情视频 | 日韩在线观看av | 国产主播在线播放 | 国产一级性生活片 | 久久久性 | 黄色午夜| 亚洲天堂成人在线观看 | 欧美激情黄色 | 91天堂网| 久久偷拍免费视频 | 久久久久国产 | 中文字幕日韩有码 | 91久久国产综合久久91精品网站 | 久久93 | 污视频在线 | 91高潮大合集爽到抽搐 | 九九九九九精品 | 日韩视频一区二区 | 九九九色 | 狠久久| 日韩avav| 欧美激情中文字幕 | h网站在线播放 | 精品一区二区三区四区五区 | 91麻豆精品久久久久蜜臀 | 性欧美极品 | 欧美3p视频 | www.我爱av | 超碰精品在线 | 美女搞黄在线观看 | 日日碰狠狠添天天爽 | 成人黄色av网站 | 99国产在线 | 少妇粉嫩小泬喷水视频www | 人体毛片| 岳奶大又白下面又肥又黑水多 | 中国免费黄色片 | 亚洲国产网址 | 国产va | 亚洲性色图 | 天天想你在线观看完整版高清免费 | www.精品视频 | 三级福利片| 素人av在线 | 伊人婷婷久久 | 国产精品探花视频 | 欧美黄色小视频 | 在线观看国产一区二区 | 美女扒开尿口给男人捅 | 欧美精品999| 探花一区 | 日韩一区2区 | 国产一区不卡 | 久久99深爱久久99精品 | 国语对白永久免费 | 久久永久视频 | 99国产在线| 久久艹av| 精品人妻一区二区三区日产乱码 | 亚洲少妇一区 | 麻豆成人精品国产免费 | 中文字幕在线看 | 国产女人毛片 | 精品不卡一区二区 | 亚洲精品第一 | 久久久欧美精品sm网站 | 久久99精品国产麻豆婷婷洗澡 | 黄色免费在线视频 | 亚洲国产黄色 | 国产国语亲子伦亲子 | 影音先锋男人的天堂 | 九色视频在线观看 | 国产高潮国产高潮久久久 | 黄色在线播放 | 视频区小说区图片区 | 亚洲精品一区二区三区在线观看 | 亚洲黄色片网站 | 色欧美片视频在线观看 | 日本成人a | 午夜神马影院 | 校园春色亚洲色图 | 天堂精品 | 丰满双乳秘书被老板狂揉捏 | 日韩在线成人 | 成人免费黄色大片v266 | 理伦影院 | 国产精品理论片 | 成人国产精品免费观看动漫 | 狠狠综合久久 | 亚洲区精品 | 狠狠网站| 欧美日韩国产高清 | 亚洲成人tv| 五月婷婷久久久 | 亚洲最大成人av | 成人国产一区二区 | 久久网页| 国产精品一二三四五 | 日韩av一卡 | 久久精品电影 | 污污免费在线观看 | www.中文字幕| 尤物久久| 亚洲欧美在线一区二区 | 91美女片黄在线观看游戏 | 国内av自拍 | 久久小草 | 一区二区三区精品在线观看 | 亚洲高清精品视频 | 黄网在线播放 | 91精品国产99久久久久久红楼 | www日韩av| 一区二区三区视频在线 | 肮脏的交易在线观看 | 成人亚洲精品久久久久软件 | 在线亚洲一区二区 | 日韩精选视频 | 四虎影酷 | 色99色| 99精品99| 99爱爱| 久久9966| 91丨国产丨白丝 | 中文字幕人妻一区二区三区在线视频 | 男女无遮挡免费视频 | 亚洲激情视频网站 | 福利电影在线播放 | 蜜桃av一区二区 | 日本一级视频 | 久久色av | 香蕉网在线 | 亚洲精品国产欧美在线观看 | 欧美大片黄 | 精品视频免费在线观看 | 用力使劲高潮了888av | 天堂婷婷| 欧美中文一区 | 熟妇人妻一区二区三区四区 | 欧美人妻一区二区三区 | 国产午夜精品福利视频 | 四虎在线播放 | 激情av在线 | 男人亚洲天堂 | 色啪视频| 免费看污视频的网站 | 国产女主播视频 | 青青草国产成人av片免费 | 欧美91在线 | 上原亚衣在线 | 久久亚洲国产 | 麻豆成人精品 | 日韩欧美在线看 | 91视频看片 | 亚洲国产网站 | 中文字幕日韩一区二区 | 国产一卡二卡三卡四卡 | 精品二区在线观看 | 亚洲精品国产电影 | www.狠狠干 | 免费成人av片 | 美女免费视频观看 | 成人精品福利 | 国产精品视频在线观看免费 | 国产特级片 | 六月激情综合 | 女生喷水视频 | 欧美午夜在线视频 | 中国久久 | 久久精品偷拍视频 | 老司机午夜免费精品视频 | 蜜臀99| 美女黄色大片 | 国产精品成人一区二区三区 | 亚洲欧美日韩在线播放 | 椎名空在线 | 无码人妻精品一区二区中文 | 亚洲欧美不卡 | 麻豆国产一区二区三区四区 | 亚洲综合在线观看视频 | 亚洲成av人片在线观看无 | 污到下面流水的视频 | 在线观看精品国产 | 国产亚洲视频在线观看 | 国产一区二区三区精品视频 | 婷婷六月综合 | 永久免费成人代码 | 精品啪啪| 欧洲一级黄色片 | 爆操极品| 无码精品人妻一二三区红粉影视 | 久久久精品人妻无码专区 | 欧美日韩h | 人人澡人人爱 | 日本免费网站 | 久久精品视频2 | 紧身裙女教师三上悠亚红杏 | 午夜私人影院 | 亚洲图片综合区 | 无码黑人精品一区二区 | 欧美乱轮视频 | 国产午夜精品在线 | 欧美精品乱码视频一二专区 | 中文字幕av播放 | 日韩免费高清 | 伊人老司机 | 艳妇乳肉豪妇荡乳av无码福利 | 污视频网站免费在线观看 | 99久久久成人国产精品 | 亚州久久久 | 欧美图片一区二区三区 | 精品国产91 | 日穴视频 | 亚洲77777| 视频在线观看一区二区三区 | 欧洲一区二区在线 | 欧洲一级黄色片 | 精品一区二区视频 | 国产精品1000部啪视频 | 激情超碰 | 粉色视频免费 | 九九免费 | 伊人逼逼 | 色资源站 | 17c在线观看视频 | 激情在线网站 | 韩国成人免费视频 | 国产在线观看黄 | 天天干天天干 | 日批在线观看 | 成人做爰www免费看视频网站 | 中文字幕一级片 | 视频一区二区国产 | 中文字幕av高清 | 四虎国产精品永久在线国在线 | 手机看片1024日韩 | 中文字幕资源站 | 香蕉依人| 日韩精品一二三四区 | 色婷婷av| 欧美疯狂做受xxxxx高潮 | 国产精品99久久久久久久久久久久 | 青青草成人免费视频 | 日韩五码在线 |