import socket
import time
import smbus
PCA9535_REG_INPUT_PORT1 = 1
PCA9535_REG_OUTPUT_PORT0 = 2
PCA9535_REG_CONFIG_PORT0 = 6
HOST_IP = "XXX.XXX.XXX.XXX" # 接続するサーバーのIPアドレス
PORT = 9999 # 接続するサーバーのポート
DATESIZE = 10 # 受信データバイト数
class DIO_8_4RD_IRC():
i2c = smbus.SMBus(1)
def __init__(self, slave=0x23):
self.address = slave
self.i2c.write_byte_data(self.address, PCA9535_REG_CONFIG_PORT0, 0xf0)
# デジタル出力
def output(self, value):
self.i2c.write_byte_data(self.address, PCA9535_REG_OUTPUT_PORT0, ~value)
# デジタル入力
def input(self):
return ~self.i2c.read_byte_data(self.address, PCA9535_REG_INPUT_PORT1) & 0xff
if __name__ == '__main__':
expander = DIO_8_4RD_IRC()
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client_socket.connect((HOST_IP, PORT))
intputStatus = 99
while True:
# IOInputの確認
nowStatus = expander.input()
# 値が変わっていればソケット送信
if intputStatus != nowStatus:
input_data = nowStatus.to_bytes(2, 'little')
client_socket.send(input_data) # データ送信
print('Send data : ',input_data)
sendReturn = client_socket.recv(DATESIZE) # データ受信
sendReturn = sendReturn.decode('utf-8')
print('recv data : ',sendReturn)
#
intputStatus = nowStatus
time.sleep(1)
import socket
HOST_IP = "XXX.XXX.XXX.XXX" # 接続するサーバーのIPアドレス
PORT = 9999 # 接続するサーバーのポート
if __name__ == '__main__':
recvline = ''
sendline = ''
num = 0
# Socket接続
socket1 = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
socket1.bind((HOST_IP, PORT))
socket1.listen(1)
while True:
print('クライアントからの入力待ち状態')
# コネクションとアドレスを取得
connection, address = socket1.accept()
print('接続したクライアント情報:' + str(address))
# 無限ループ byeの入力でループを抜ける
while True:
# クライアントからデータを受信
recvline = connection.recv(5)
recv = int.from_bytes(recvline, 'little')
print('クライアントで入力された文字=[' + str(recv)+"]")
sendline = 'OK'.encode('utf-8')
connection.send(sendline)