最近几个月公司太忙了,到现在已经连续出差两个多月了。
这个项目这要做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‘)
时间: 2024-10-11 12:08:31