远程监控显示brother数控机床数据 - jonney_wang
最近几个月公司太忙了,到现在已经连续出差两个多月了。
这个项目这要做mes系统,涉及到产品在机床的加工过程监控,然后led看板显示产品进度。
这里的主角是日本的brother数控机床,服务器按照一定频率读取机床的生产数据,最基本的包括机床的工件产量,开机状态等信息。
后台是Java写的,其中一部分是led显示机床数据,而读取机床数据的部分本来想用dotnet做个Windows服务,可是折腾了很长时间还是没有搞定。
brother机床设备里面是个Linux系统,里面架设有ftp服务,可以从远程pc访问数据库nc文件,第一次用dotnet无法读取,原因是项目所在目录包含中文字符,后来换个位置后可以读取。如今在纯英文目录都不行,换了好几台设备还是不行,一直提示“基础连接已经关闭: 服务器提交了协议冲突”,网上很多资料都说是目录含有中文字符,可是我再三确认没有中文,我用的系统是win10 x64专业版,也有说是使用了代理,我把reqFtp.Proxy = null;还有关掉本地防火墙,主动被动模式都不行。
最后只能放弃,第二天早上突发奇想,用python写个脚本试试,果真见效,只能说dotnet framework 在ftp方面还是存在不少bug。以下是python脚本:
1 # coding: utf8 2 from ftplib import FTP 3 4 5 def download(host=\'192.168.1.5\', port=21, user=\'1234\', pwd=\'1234\', nc=\'WKCNTR.NC\'): 6 cnc = FTP() 7 try: 8 cnc.connect(host=host, port=port, timeout=10) 9 except Exception as e: 10 print(e) 11 return 12 try: 13 cnc.login(user=user, passwd=pwd) 14 except Exception as e: 15 print(e) 16 return 17 print(cnc.getwelcome()) 18 for name in cnc.nlst(): 19 print(name) 20 file = open(\'d:/\' + nc, \'w\', encoding=\'utf8\') 21 22 def save_local(line): 23 file.write(line + \'\n\') 24 print(line) 25 26 cnc.retrlines(\'RETR \' + nc, save_local) 27 file.close() 28 cnc.quit() 29 30 if __name__ == \'__main__\': 31 download(host=\'192.168.26.5\')
下面是新的进展,由于cnc brother的ftp并不稳定,有时会不允许连接,或连接后不允许下载文件,只要出现这种情况,就再也无法回复,只有重启。