Compare commits
5 Commits
Author | SHA1 | Date |
---|---|---|
support.sampyo | 5d5b047f6f | |
support.sampyo | 58b5077ced | |
support.sampyo | 50c7cdf2e8 | |
support.sampyo | 54c6c55f34 | |
support.sampyo | bdf1323b2d |
Binary file not shown.
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"modbus-server": {
|
||||
"address": "25.7.55.237",
|
||||
"address": "172.17.16.202",
|
||||
"port": 5020
|
||||
}
|
||||
}
|
||||
|
|
|
@ -7,5 +7,5 @@ spec:
|
|||
virtualEnv: base # 사용할 가상환경 이름입니다.
|
||||
package: requirements.txt # 설치할 Python 패키지 정보 파일입니다.(기본 값은 requirement.txt 입니다.)
|
||||
stackbase:
|
||||
tagName: v0.0.1 # Stackbase(gitea)에 릴리즈 태그명 입니다.
|
||||
tagName: v0.0.6 # Stackbase(gitea)에 릴리즈 태그명 입니
|
||||
repoName: sampyo-rs232 # Stackbase(gitea)에 저장될 저장소 이릅니다.
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
version: bwc/v2 # bwc 버전 정보입니다.
|
||||
spec:
|
||||
appName: base-app # 앱의 이름입니다.
|
||||
appName: sampyo-rs232-app # 앱의 이름입니다.
|
||||
runFile: main.py # 앱의 실행 파일입니다.
|
||||
env:
|
||||
bin: python3 # 앱을 실행할 바이너라 파일 종류입니다.(장비에 따라 다르므로 확인 후 정의해야 합니다.)
|
||||
|
@ -8,4 +8,4 @@ spec:
|
|||
package: requirements.txt # 설치할 Python 패키지 정보 파일입니다.(기본 값은 requirement.txt 입니다.)
|
||||
stackbase:
|
||||
tagName: v0.0.1 # Stackbase(gitea)에 릴리즈 태그명 입니다.
|
||||
repoName: base-template # Stackbase(gitea)에 저장될 저장소 이릅니다.
|
||||
repoName: sampyo-rs232 # Stackbase(gitea)에 저장될 저장소 이릅니다.
|
||||
|
|
37
main.py
37
main.py
|
@ -1,4 +1,4 @@
|
|||
import signal, sys, time, os
|
||||
import signal, sys, time, os, json
|
||||
import serial
|
||||
import asyncio
|
||||
from pymodbus.server.async_io import ModbusTcpServer
|
||||
|
@ -19,15 +19,19 @@ async def measurement_weight(port, data):
|
|||
result = result.replace(' ', '')
|
||||
result = float(result.replace('\r\n', ''))
|
||||
result *= 1000
|
||||
result += 1000
|
||||
|
||||
print(result)
|
||||
# print(result)
|
||||
|
||||
if result < 0.0:
|
||||
result = 0.0
|
||||
# if result < 0.0:
|
||||
# result = 0.0
|
||||
|
||||
data.setValues(3, 1, [int(result)])
|
||||
except Exception as e:
|
||||
print(f'measurement_weight: \n{e}')
|
||||
port.close()
|
||||
time.sleep(0.5)
|
||||
port.open()
|
||||
pass
|
||||
|
||||
await asyncio.sleep(1)
|
||||
|
@ -58,7 +62,10 @@ def exit_handler(signum, frame):
|
|||
|
||||
async def run_server(port, data):
|
||||
# TCP 서버 시작
|
||||
server = ModbusTcpServer(context, address=("25.7.55.237", 5020))
|
||||
with open(os.path.join('./config.json'), encoding='UTF-8') as f:
|
||||
jsonData = json.load(f)
|
||||
|
||||
server = ModbusTcpServer(context, address=(jsonData['modbus-server']['address'], jsonData['modbus-server']['port']))
|
||||
|
||||
update_coil_task = asyncio.create_task(measurement_weight(port=port, data=data))
|
||||
update_hr_task = asyncio.create_task(set_zero(port=port, data=data))
|
||||
|
@ -67,14 +74,8 @@ async def run_server(port, data):
|
|||
await asyncio.gather(update_coil_task, update_hr_task)
|
||||
|
||||
if __name__ == '__main__':
|
||||
parser = argparse.ArgumentParser()
|
||||
parser.add_argument('-app',help='')
|
||||
args = parser.parse_args()
|
||||
|
||||
ROOT_PATH = f'/usr/local/sdt/app/{args.app}'
|
||||
|
||||
# Define serial port
|
||||
serial_port = serial.Serial('/dev/ttyMAX1', 115200, parity=serial.PARITY_NONE, stopbits=serial.STOPBITS_ONE, bytesize=serial.EIGHTBITS, timeout=1)
|
||||
serial_port = serial.Serial('/dev/ttyMAX0', 115200, parity=serial.PARITY_NONE, stopbits=serial.STOPBITS_ONE, bytesize=serial.EIGHTBITS, timeout=1)
|
||||
|
||||
# For detect Ctrl+C
|
||||
signal.signal(signal.SIGINT, exit_handler)
|
||||
|
@ -88,15 +89,3 @@ if __name__ == '__main__':
|
|||
context = ModbusServerContext(slaves=store, single=True)
|
||||
loop = asyncio.get_event_loop()
|
||||
loop.run_until_complete(run_server(port=serial_port, data=store))
|
||||
|
||||
# while True:
|
||||
# start = time.time()
|
||||
# measurement_weight(port=serial_port, data=store)
|
||||
# print(registers[0])
|
||||
|
||||
# end = time.time()
|
||||
|
||||
# diff = end - start
|
||||
|
||||
# if diff < 1:
|
||||
# time.sleep(1 - diff)
|
||||
|
|
Loading…
Reference in New Issue