Skip to content

Commit 981dbfe

Browse files
committed
BoardID, closing serial
Boards are taken by their ports instead of ids, multiple instances was causing boards ids to be reseted and not macthed. close serial monitor now sends that status to webclient
1 parent 8f3ebc4 commit 981dbfe

File tree

3 files changed

+25
-18
lines changed

3 files changed

+25
-18
lines changed

Board.py

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,7 @@ def __init__(self, boardName, fqbn, port):
2121
self.boardName = boardName
2222
self.fqbn = fqbn
2323
self.port = port
24-
self.ID = random.randint(1000000, 9999999)
25-
logging.info(f"Board with Name:{boardName}, FQBN:{fqbn}, Port:{port}, ID:{self.ID} is created")
24+
logging.info(f"Board with Name:{boardName}, FQBN:{fqbn}, Port:{port} is created")
2625

2726
def uploadCode(self, code, fqbn = None):
2827
"""
@@ -33,7 +32,7 @@ def uploadCode(self, code, fqbn = None):
3332
3433
fqbn (str): kodun arduino-cli tarafında ki adı
3534
"""
36-
logging.info(f"Uploading code to {self.ID}")
35+
logging.info(f"Uploading code to {self.boardName}:{self.port}")
3736
fqbn = fqbn if fqbn != None else self.fqbn
3837
createInoFile(code)
3938
pipe = executeCliPipe(f"compile --port {self.port} --upload --fqbn {fqbn} {config.TEMP_PATH}/tempCode")
@@ -48,7 +47,7 @@ def compileCode(self, code, fqbn = None):
4847
4948
fqbn (str): kodun arduino-cli tarafında ki adı
5049
"""
51-
logging.info(f"Compiling code for {self.ID}")
50+
logging.info(f"Compiling code for {self.boardName}:{self.port}")
5251
fqbn = fqbn if fqbn != None else self.fqbn
5352
createInoFile(code)
5453
pipe = executeCliPipe(f"compile --fqbn {fqbn} {config.TEMP_PATH}/tempCode")
@@ -74,7 +73,7 @@ def refreshBoards():
7473
boardPort = boardJson["port"]["address"]
7574
logging.info(f"Found board with Name:{boardName}, FQBN:{boardId}, Port:{boardPort}")
7675
board = Board(boardName, boardId, boardPort)
77-
Data.boards[board.ID] = board
76+
Data.boards[boardPort] = board
7877

7978
@staticmethod
8079
async def sendBoardInfo(websocket):
@@ -86,11 +85,11 @@ async def sendBoardInfo(websocket):
8685
"""
8786
body = {"command": "returnBoards", "boards": []}
8887
for k, v in Data.boards.items():
89-
body['boards'].append({"boardName": v.boardName, "port": v.port, "ID": v.ID})
88+
body['boards'].append({"boardName": v.boardName, "port": v.port})
9089
body = json.dumps(body)
9190
logging.info(f"Sending {body}")
9291
await websocket.send(body)
9392

9493

9594
def __repr__(self):
96-
return f"{self.boardName} on port: {self.port} with fqbn of {self.fqbn} and ID of :{self.ID}"
95+
return f"{self.boardName} on port: {self.port} with fqbn of {self.fqbn}"

SerialMonitorWebsocket.py

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -52,11 +52,11 @@ async def commandParser(self, body):
5252
await self.sendResponse()
5353

5454
if command == "upload":
55-
self.closeSerialMonitor()
55+
await self.closeSerialMonitor()
5656
elif command == "openSerialMonitor":
5757
self.openSerialMontor(body["port"], body["baudRate"])
5858
elif command == "closeSerialMonitor":
59-
self.closeSerialMonitor()
59+
await self.closeSerialMonitor()
6060
elif command == "serialWrite":
6161
self.serialWrite(body["text"])
6262

@@ -101,23 +101,30 @@ async def sendResponse(self):
101101
logging.info(f"SerialMonitorWebsocket sending response back")
102102
await self.websocket.send(bodyToSend)
103103

104-
def closeSerialMonitor(self):
104+
async def closeSerialMonitor(self):
105105
"""
106106
Serial monitörü kapatır
107107
"""
108108
logging.info(f"Closing serial monitor")
109109
if self.serialOpen and self.ser != None:
110110
self.ser.close()
111+
bodyToSend = {"command":"closeSerialMonitor"}
112+
bodyToSend = json.dumps(bodyToSend)
113+
await self.websocket.send(bodyToSend)
114+
111115
self.serialOpen = False
112116

113117
async def serialLog(self):
114118
"""
115119
Serial monitörü okur ve websocket aracılığı ile web tarafına gönderir
116120
"""
117121
if self.serialOpen and self.ser != None:
118-
waiting = self.ser.in_waiting
119122
try:
123+
waiting = self.ser.in_waiting
120124
line = self.ser.read(waiting).decode("utf-8")
125+
except serial.SerialException:
126+
await self.closeSerialMonitor()
127+
return
121128
except:
122129
return
123130
if line == "":

Websocket.py

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -79,9 +79,9 @@ async def commandParser(self, body):
7979
await self.sendResponse()
8080

8181
if command == "upload":
82-
await self.upload(body['ID'], body["code"])
82+
await self.upload(body['port'], body["code"])
8383
elif command == "compile":
84-
await self.compile(body['ID'], body["code"])
84+
await self.compile(body['port'], body["code"])
8585
elif command == "getBoards":
8686
await self.getBoards()
8787

@@ -97,7 +97,7 @@ async def sendResponse(self):
9797
await self.websocket.send(bodyToSend)
9898

9999

100-
async def upload(self, ID, code):
100+
async def upload(self, port, code):
101101
"""
102102
Kodun karta yüklenmesi için Board.uploadCode() fonksiyonunu çalştıran fonksiyon
103103
@@ -106,13 +106,13 @@ async def upload(self, ID, code):
106106
107107
code (str): kodun kendisi.
108108
"""
109-
pipe = Data.boards[ID].uploadCode(code)
109+
pipe = Data.boards[port].uploadCode(code)
110110
bodyToSend = {"command": "cleanConsoleLog", "log": ""}
111111
bodyToSend = json.dumps(bodyToSend)
112112
await self.websocket.send(bodyToSend)
113113
await self.readAndSend(pipe)
114114

115-
async def compile(self, ID, code):
115+
async def compile(self, port, code):
116116
"""
117117
Kodun derlenmesi için Board.compileCode() fonksiyonunu çalştıran fonksiyon
118118
@@ -121,7 +121,7 @@ async def compile(self, ID, code):
121121
122122
code (str): kodun kendisi.
123123
"""
124-
pipe = Data.boards[ID].compileCode(code)
124+
pipe = Data.boards[port].compileCode(code)
125125

126126
bodyToSend = {"command": "cleanConsoleLog", "log": "Compling Code...\n"}
127127
bodyToSend = json.dumps(bodyToSend)
@@ -159,6 +159,7 @@ async def mainLoop(self):
159159
body = self.queue.get()
160160

161161
await self.commandParser(body)
162-
162+
except:
163+
logging.exception("Websocket Mainloop: ")
163164
finally:
164165
self.deviceChecker.terminate()

0 commit comments

Comments
 (0)