怎么使用C#通过TCPIP协议和川崎机器人通信,从而控制机器人

怎么使用C#通过TCPIP协议和川崎机器人通信,从而控制机器人,第1张

由于本人在工业自动化行业做机器视觉的工作,所以除了图像处理方面要掌握外,还需要与工业机器人进行通信。最近学习了计算机与川崎机器人的TCP/IP通信,于是在这里记录一下。
除了直接与机器人通信外,有一种方式是通过PLC间接通信,附上我的另一篇文章,讲c#与三菱PLC通信的:C#与三菱PLC通信
首先假设一个简单的应用情况,有一台带相机的工业机器人,需要在机器人移动到某位置时,发出信号,然后视觉系统拍照并处理,最后将返回信号发送回机器人。这个程序就是以这个应用为基础写的。下图是机器人示教器上的程序:移动到P1点后,给计算机发送拍照信号photo=1,然后计算机处理后返回over=1,机器人收到后移动到P2点。
2
机器人示教器上面的程序十分简单,然后说明计算机上的程序。
首先是建立计算机与机器人的TCP链接,这里以计算机为客户端,机器人为服务端。
public void ConnectRobot()//链接tcp
{
byte[] data = new byte[1024];
newclient_Client = new Socket(AddressFamilyInterNetwork, SocketTypeStream, ProtocolTypeTcp);
string ipadd = "19216830238";//机器人IP地址
int port = ConvertToInt32("23");//端口号
IPEndPoint ie = new IPEndPoint(IPAddressParse(ipadd), port);
try
{
newclient_ClientConnect(ie);//建立连接
Connected_Client = true;//连接标志位
btnConnEnabled = false;
sendToRobot("as\r\n");//建立连接后,首先发送as,则可以通过计算机发送as语言指令
SetTishi("机器人链接成功");//显示
}
catch (SocketException e)
{
SetTishi("连接机器人失败 " + eMessage);
return;
}
//用于监听机器人是否发送数据
ThreadStart myThreaddelegate = new ThreadStart(ReceiveMsg);
myThread_client = new Thread(myThreaddelegate);
myThread_clientStart();
}
TCP通信的基本知识不在这里讲,这里要说明的是connect后为什么有一句向机器人发送“as”。在川崎机器人E系列TCP/IP通信手册中,有如下内容:
即,在connect后首先向机器人发送"as"后,可以直接从计算机发送机器人的AS语言指令。这样,就可以实现从计算机上对机器人程序进行控制。
建立连接后,要做的就是收发信息了。计算机向机器人发信息很简单,因为计算机可以向机器人发送as语言指令,所以就是简单的TCP发送消息就可以了,如直接发送“over=1”,机器人就可以获取得到了。需要说的是机器人向计算机发送消息,在本程序中没有采用在机器人中建立TCP服务器然后监听的方法,而是在计算机中实现该功能。本方法利用的是川崎机器人as语言中的list指令,list指令的功能是显示所有程序步骤和变量,而要查询变量photo的值,只需要向机器人发送“list/r photo”,这样就可以得到变量photo的值。这样就可以通过计算机端不断查询,达到了机器人发送数据的效果,从而简化了机器人程序,复杂性降低。以下是监听代码:
public void ReceiveMsg()//监听tcp
{
int thelastData = 999;
while (true)
{
try
{
byte[] data = new byte[1024];
int recv = newclient_ClientReceive(data);//接收消息
string stringdata = EncodingUTF8GetString(data, 0, recv);//将bytes转换为字符
//string stringdata = EncodingUnicodeGetString(data, 0, recv);
if (stringdata == "")//判断是否断开连接
{
SetTishi("服务器已退出");
newclient_ClientClose();
Connected_Client = false;
break;
}
//利用AS语言的检测变量的指令list实现监听功能
//因为发送‘list/r photo’监测变量photo的值返回的还有其它字符,所以要去掉这些字符
stringdata = stringdataTrim();
string strTemp = "photo =";
int iCount = stringdataIndexOf(strTemp);//得到多余字符的长度
if (iCount > 0)
{
string read = stringdataSubstring(strTempLength + iCount + 1, 2);//去掉多余字符以及photo
int kk = intParse(read);//得到变量photo的值
if (kk != 0)
{
if (thelastData != kk)//信号从0->1才认为收到信号
{
SetTishi("接收到机器人拍照信号");
sendToRobot("over=1\r\n");//给机器人完成信号
SetTishi("接收到消息:" + stringdata);
}
}
thelastData = kk;
}
}
catch
{
}
sendToRobot("list/R photo\r\n");//向机器人发送as语言的指令,查询photo的值
ThreadSleep(100);
}
}
通过不断向机器人获取变量photo的值,当检测到photo=1时,就可以向机器人发送完成信号over=1,然后机器人程序往下执行。
---------------------
作者:千年de小妖
来源:CSDN
原文:>cs16服务器架设
一、基本安装篇
1、建立服务器的带宽和机器配置
16服务器对对带宽和机器配置的要求比15高一些,我在ADSL上通过浩方平台建立15服务器,可以在本机上进行游戏,但是16出现明显的停顿,无法流畅的游戏,即使机器配置很高也不能彻底解决,相信带宽是最大的瓶颈。
因此,使用ADSL或者机器配置一般的cser建议不要在本机上建立服务器,用lan的cser在本机上建立服务器效果也不会太理想(除非你只想提供一个服务器,过一把OP的瘾,呵呵)。
2、16服务器版本
我收集有6个版本的cs16,通过试用,个人认为esai2738经典版是最好的,只有200M,同时包括了建立服务器的必要组件,用来游戏与经典版建立的服务器能够很好的兼容。
下载地址:bt种子下载
3、下载完毕后,点击桌面的快捷方式‘Cs16服务器’,自己的服务器就开始工作了,就这么简单?!呵呵。不要只扔西红柿,再来几个鸡蛋,鸡蛋西红柿:)
这只是第一步。看看下边吧:
二、设置篇
1、右键打开桌面快捷方式的属性:
×:\Cs16中文版\hldsexe -game cstrike -port 27016 +maxplayers 16 +map de_dust2 -console +localinfo mm_gamedll dlls/hldsmpdll
其中27016为服务器端口,可以进行修改;
maxplayers 16为最大人数,可以自由变更,别超过32;
开始地图de_dust2可以更换成你喜欢的地图;
+localinfo mm_gamedll dlls/hldsmpdll指你的游戏用哪个dll启动(很多人反映没有新特性,就是由于你的dll没设置好)
其他的参数建议不要更改。
2、反作弊软件的选择
很多自己建立了服务器的cser会发现无法进入游戏,或者进入后很快被踢出,我在开始建立服务器的时候也遇到了类似问题。查考了大量资料后,我认为是反作弊软件的冲突造成的。一般情况下,我们认为cd比vac要强,会自然想打开服务器的cd反作弊插件,或者进入游戏前打开cd。此时,以上问题就出现了。
因此,我们需要将cs的cd插件关掉:
打开\cstrike\addons\metamod\pluginsini,在“win32 addons/cdeath/cdmoddll”前加上//,
即“//win32 addons/cdeath/cdmoddll”。
进入服务器前也不要打开cd。
安装vac,打开cstrike\liblistgam,将设置成secure "1",一般情况下,安装完毕默认是打开的,如果关闭可以将1改为0。
wwcl是杜绝修改脚本作弊的插件,打开cstrike\addons\metamod\pluginsini,其中win32 addons/wwcl/dlls/pcawwclconfig_mmdll即为打开,可以在前面加上//将其关闭。
建议:打开vsm和wwcl,可在一定程度上防止作弊。
3、服务器中amx插件的使用
可以说,amx插件对15而言是成熟的,在16上使用是不是有冲突还不敢肯定,因此建议不要安装过多的amx插件。
我的amx插件:
; AMX Mod plugins
adminamx admin base (required for any admin-related)
;admin_mysqlamx admin base - MySQL version (comment adminamx)
admincmdamx basic admin console commands
adminhelpamx help command for admin console commands
adminslotsamx slot reservation
menufrontamx front-end for admin menus
cmdmenuamx command menu (speech, settings)
plmenuamx players menu (kick, ban, client cmds)
restmenuamx restrict weapons menu
mapsmenuamx maps menu (vote, changelevel)
antifloodamx prevent clients from chat-flooding the server
adminchatamx console chat commands
adminvoteamx vote commands
nextmapamx displays next map in mapcycle
timeleftamx displays time left on map
mapchooseramx allows to vote for next map
scrollmsgamx displays a scrolling message
imessageamx displays information messages
welcomemsgamx console motd @ client connection
statsamx stats on death or round end (CSStats Module required!)
stats_loggingamx weapons stats logging (CSStats Module required!)
telemenuamx teleport menu (Fun Module required!)
miscstatsamx bunch of events announcement for Counter-Strike
pausecfgamx allows to pause and unpause some plugins
statscfgamx allows to manage stats plugins via menu and commands
;ucstats_cstrikeamx i love you
;ucstats_liveamx hehe heh
;goreamx 44hehe
amx_restrictshieldsamx
前面加;的为禁止的。最后一个为禁用盾牌插件。
PS:看着服务器中一堆拿着盾牌的家伙,感觉实在是不爽:)
下载amx以前的版本安装,amx点击下载
免盾牌amx程序amx插件,解压后拷贝到\cstrike\addons\amx目录下,覆盖源文件。
完成后,可以自己考虑使用那些插件:打开\cstrike\addons\amx\plugins\pluginsini,进行修改。
4、服务器的一般设置
首先要设置你的服务器基本参数、OP密码等。
打开\cstrike\servercfg
sv_password "" 设置玩家进入你的服务器是否需要密码,在""中加上你的密码。
rcon_password "" 设置远程控制OP密码。
hostname "BeiJing JiaoDaJiaYuan cs16 Server" 设置你的服务器名称
sv_maxrate 10000
sv_minrate 1000
sv_maxspeed 320 以上三个为服务器网络连接参数,不建议修改
pausable 0 是否允许暂停游戏 禁止0/允许1
sv_cheats 0 作弊模式 关闭0/开启1,谁会开呢,呵呵
sv_aim 0 自动瞄准 关闭0/开启1
mp_flashlight 1 战术手电 允许1/禁止0
mp_footsteps 1 脚步声 开启1/关闭0
mp_falldamage 1 高处落下伤害 开启1/关闭0
mp_autokick 1 自动踢出不动的玩家 开启1/关闭0
allow_spectators 1 观察员模式 开启1/关闭0
sv_restartround 0 服务端设定游戏复位的时间,包括杀人数、武器、金钱和得分。设0不复位。建议设置为0,不要改。
mp_timelimit 450 每局时间,以分钟计。
mp_freezetime 3 购买武器冻结时间 (0-45)建议5秒以内。
mp_roundtime 3 每回合几分钟,一般为3
mp_buytime 025 购买武器装备时间(025-15)即15秒-90秒
mp_c4timer 35 c4炸d倒计时时间 (15-75)
mp_startmoney 800 开始游戏时的金钱数量(800-16000)
mp_forcechasecam 2 死亡后视角 1本队队友 2原地 0无限制
mp_chasecam 1 死亡后视角模式 0自由跟随/1固定跟随
mp_fadetoblack 0 人物死亡后屏幕 不变黑0/变黑1
mp_friendlyfire 0 友军误伤 关闭0/开启1,如果是混战服务器,建议设置为0,无聊的人很多:)
mp_friendly_grenade_damage 1 手雷友军伤害 关闭0/开启1
mp_tkpunish 0 杀害友军惩罚 0不惩罚/1惩罚:杀害队友超过(1-n)人,下一回合自动死亡
mp_autoteambalance 1 自动调整双方队伍平衡 不调整0/调整(1-n)个人
mp_limitteams 2 双方人数差超过n人即自动调整人数差异 0关闭
mp_hostagepenalty 0 杀害人质惩罚 0不惩罚/惩罚:规定时间内伤害人质超过(1-n)人自动踢出
mp_fraglimit 0 杀人数、得分上限 无0/有(1-n),超过上限就换地图。
mp_winlimit 0 胜利次数上限无0/有(1-n),超过上限就换地图。
mp_maxrounds 0 回合上限 无0/有(1-n),超过上限就换地图。
sv_allowdownload 1 允许下载 开启1/关闭0
sv_send_logos 1 允许下载(sv_allowdownload 1)开启时控制是否允许玩家的LOGO传送 允许1/禁止0
sv_send_resources 1 允许下载(sv_allowdownload 1)开启时控制是否允许资源文件传送 允许1/禁止0
sv_allowupload 1 允许上传 关闭0/开启1
sv_gravity 800 服务器重力设置 默认正常重力800,范围-999到99999,想享受一下玩家飘在空中的‘美景’,可以修改,^_^
mp_mapvoteratio 06 投票比率(大家可以通过投票踢出作弊者和更换地图) (01-1)
mp_ghostfrequency 01 设定鬼魂模式刷新值(01-1)
sv_sendvelocity 0服务器高品质纹理 关闭0/开启1
mp_lowlag 1服务器减少LAG延迟现象(对服务器要求高) 关闭0/开启1
mp_decals 300服务器细节数据发送 默认300 ,可减低到250、200,改善速度。
sv_voiceenable 1 服务器是否允许麦克风语音通讯 允许1/禁止0
sv_alltalk 0 服务器是否允许客户端之间使用语音通信 允许1/禁止0
sv_region 4 设置你的服务器为亚洲地区,玩家刷新的时候更方便找到你的服务器。
mp_logfile 0服务器是否记录文件 不记录0/记录1
mp_logmessages 0 是否在记录文件里记录谈话内容 不记录0/记录1
// load ban files
ex-ec listipcfg
ex-ec bannedcfg
进入别人的服务器看到一些有意思的欢迎画面和欢迎词,自己也可以做。
打开\cstrike\motdtxt,里面可以只是文本文件,想写的都写上吧,注意不要太多就OK了。如果你想换成你的网址和logo,可以在其中修改。把你的logo文件放到\cstrike目录下,修改amx_imessage "Welcome to %hostname% Please Enjoy Yourself :]" "255100000"
amx_imessage "Please Have Fun in %hostname%
More Info Please Visit >

服务器(虚拟主机)中挂QQ群机器人是可以在淘宝上直接沟买,然后加机器人到群里就可以了。
步骤如下:

1、首先服务器也就是一台远程的电脑,你可以自由分配服务器的系统但是需要和你的idc服务商说一下, 控制服务器是需要点击你电脑的开始输入命令“mstsc”会出现远程桌面连接;

2、这里填写你的服务器ip地址,点一下连接;

3、这里输入你的服务器帐号一般默认帐号都是:amdinistrator。

4、个别机房会自定义,登录好之后点确定,你就可以进入服务器了。服务器基本上和你自己的电脑是一样的,拥有IE浏览器,你可以下载任何你需要下载的软件,只要系统兼容就没问题。

5、虚拟主机是指在网络服务器上分出一定的磁盘空间,简单点说就是一个文件夹,无法运行exe文件所以不可能实现你要的功能。

QQ机器人其实就是把常用的数据录入到数据库中,当你提交不同的数据就会自动从数据库中调出不同的数据反馈给你,就是搜索查找功能,完全是一问一答,有的时候还是所答非所问。QQ机器人还是一种对QQ进行功能扩展的程序,在机器人服务端登录QQ号码后可以按照预先设定的一些指令自动完成某些任务。

例如与好友进行交谈,如腾讯的叨客机器人,也可以执行一些数据交互任务;如滔滔和得瑟的机器人,就是将好友发来的消息推送的网站,实现qq与网站的交互。由于腾讯暂未公开qq接口,大部分非腾讯官方的机器人都是采用lumaqq等开源qq协议进行编写。还没有开源的qq机器人,部分网站提供webservice。数据中的数据还有待大量的搜集和完善,QQ机器人的发展前景是非常广阔的。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/13105374.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-30
下一篇 2023-05-30

发表评论

登录后才能评论

评论列表(0条)

保存