| FAM3 イーサネット上位通信 ラズベリーパイ |



| IPアドレス | host='192.168.1.4' |
| ポート番号 | port=12289 |
| 横河 FAM3上位通信 | ||||||
| #from __future__ import print_function | ||||||
| #import sys | ||||||
| import socket | ||||||
| class MySocket: | ||||||
| """demonstration class only | ||||||
| - coded for clarity, not efficiency | ||||||
| def __init__(self, sock=None): | ||||||
| print('init') | ||||||
| if sock is None: | ||||||
| self.sock = socket.socket( | ||||||
| socket.AF_INET, socket.SOCK_STREAM) | ||||||
| else: | ||||||
| self.sock = sock | ||||||
| def connect(self, host, port): | ||||||
| print('connect') | ||||||
| self.sock.connect((host, port)) | ||||||
| return 0 | ||||||
| except socket.error: | ||||||
| print('ソケットエラーです') | ||||||
| return -1 | ||||||
| def mysend(self, msg): | ||||||
| print('mysend') | ||||||
| MSGLEN=len(msg) | ||||||
| self.sock.send(msg.encode('utf-8')) | ||||||
| def myreceive(self): | ||||||
| print('myreceive') | ||||||
| data=(self.sock.recv(1024)) | ||||||
| return data | ||||||
| #-------------------------------------------------------------------- | ||||||
| def main(): | ||||||
| host='192.168.1.4' | ||||||
| port=12289 | ||||||
| myapp = MySocket() | ||||||
| ret=myapp.connect(host,port) | ||||||
| #1ワードの読み出し 16ビット符号有り | ||||||
| if ret==0: | ||||||
| cmd='01WRD' | ||||||
| myapp.mysend(cmd+'D00001,04'+'\r\n') | ||||||
|
count=4 ret=[] anser=[] |
||||||
| ret=myapp.myreceive().decode('utf-8') | ||||||
| # print(ret) | ||||||
| datanum=[] | ||||||
| anser=ret[2:4] | ||||||
| if anser=='OK': | ||||||
| for i in range(1,count+1): | ||||||
| start=4*i | ||||||
| end=4*i+4 | ||||||
| data=(int(ret[start:end],16)) | ||||||
| if data>=32767: | ||||||
| data=data-65536 | ||||||
| datanum.append(data) | ||||||
| print(datanum[i-1]) | ||||||
| #1ワードの読み出し 16ビット符号無し | ||||||
| cmd='01WRD' | ||||||
| myapp.mysend(cmd+'D00001,04'+'\r\n') | ||||||
|
count=4 ret=[] anser=[] |
||||||
| ret=myapp.myreceive().decode('utf-8') | ||||||
| datanum=[] | ||||||
| anser=ret[2:4] | ||||||
| if anser=='OK': | ||||||
| for i in range(1,count+1): | ||||||
| start=4*i | ||||||
| end=4*i+4 | ||||||
| data=(int(ret[start:end],16)) | ||||||
| datanum.append(data) | ||||||
| print(datanum[i-1]) | ||||||
| #1ワードの読み出し 32ビット符号無し | ||||||
| cmd='01WRD' | ||||||
| myapp.mysend(cmd+'D00001,04'+'\r\n') | ||||||
|
count=4 ret=[] anser=[] |
||||||
| ret=myapp.myreceive().decode('utf-8') | ||||||
| datanum=[] | ||||||
| anser=ret[2:4] | ||||||
| if anser=='OK': | ||||||
| for i in range(0,count,2): | ||||||
| start=4*i+4 | ||||||
| end=4+4*i+4 | ||||||
| hstart=4+4*i+4 | ||||||
| hend=4*i+8+4 | ||||||
| datalow=(int(ret[start:end],16)) | ||||||
| datahigh=(int(ret[hstart:hend],16)) | ||||||
| data=datahigh*65536+datalow | ||||||
| datanum.append(data) | ||||||
| print(data) | ||||||
| if __name__ == '__main__': | ||||||