Python Forum
How to detect wireless modem connected serially to my laptop in python - Printable Version

+- Python Forum (https://python-forum.io)
+-- Forum: Python Coding (https://python-forum.io/forum-7.html)
+--- Forum: General Coding Help (https://python-forum.io/forum-8.html)
+--- Thread: How to detect wireless modem connected serially to my laptop in python (/thread-15182.html)



How to detect wireless modem connected serially to my laptop in python - barry76 - Jan-07-2019

With the help of some earlier coding suggestion, I was trying to select the serial port with which I have connected the wireless modem.

I am using serial.tools.list_ports to list down all the com ports available in the laptop but after selecting the com port I am not able to open that

I am using mentioned below python code

import serial
import json
import tkinter
from tkinter import messagebox
from tkinter import *
import tkinter as ttk
import serial.tools.list_ports

ard = serial.Serial();
root = ttk.Tk()
root.title("Read Sensor")

B = None
C = None 

# Add a grid
mainframe = Frame(root)
mainframe.grid(column=0,row=0, sticky=(N,W,E,S) )
mainframe.columnconfigure(0, weight = 1)
mainframe.rowconfigure(0, weight = 1)
mainframe.pack(pady = 100, padx = 100)
 
# Create a Tkinter variable
tkvar1 = StringVar(root)
tkvar = StringVar(root)

#Serial Port
a=serial.tools.list_ports.comports()
for w in a:
    print(w.device)
    k = [w.device]
    print(k)
ser_dict = { i for i in k }
print (ser_dict)
val1 = tkvar1.get()
if val1 in ser_dict:
    ard.port = str (ser_dict[val1])
    ard.open()
    if C:
        C.destroy()
        C = ttk.Button(root, text =val1, command = dropCall)
        C.pack()

 
# Dictionary with options
baud = { '9600','119200','34800'}

#Pop Up desciption
popupMenu1 = OptionMenu(mainframe, tkvar1, *ser_dict)
Label(mainframe, text="Serial Port").grid(row = 1, column = 1)
popupMenu1.grid(row = 2, column =1)

popupMenu2 = OptionMenu(mainframe, tkvar, *baud)
Label(mainframe, text="Baudrate").grid(row = 3, column = 1)
popupMenu2.grid(row = 4, column =1)


#Serial Callback Functions
def helloCallBack():
    k = ard.readline().decode('ascii');
    if(len(k)>0):
        print (k);
        size = len(k);
        #print (k[0:size-2]);
        print (size);
        messagebox.showinfo('Message From Arduino',k[0:size-2]+'\n'+str(size))     

#baudrate functions
def dropCall(*args):
   global B
   value = tkvar.get()
   ## using a dictionary instead of if statements
   ## to show how dictionaries are used
   baud_dict={'9600':value, '34800':value, '119200':value}
   if value in baud_dict:
      ard.baudrate = int(baud_dict[value])
      if B:
         B.destroy()
      B = ttk.Button(root, text =value, command = helloCallBack)
      B.pack()

#Link Function
tkvar.trace('w', dropCall)
Due to mentioned below error I am not able to access that port
Exception in Tkinter callback
Traceback (most recent call last):
  File "C:\Users\Misha\AppData\Local\Programs\Python\Python36\lib\tkinter\__init__.py", line 1702, in __call__
    return self.func(*args)
  File "C:\Users\Misha\Desktop\test\GUItest.py", line 60, in helloCallBack
    k = ard.readline().decode('ascii');
  File "C:\Users\Misha\AppData\Local\Programs\Python\Python36\lib\site-packages\serial\serialwin32.py", line 267, in read
    raise portNotOpenError
serial.serialutil.SerialException: Attempting to use a port that is not open
Will looking forward for your suggestions


RE: How to detect wireless modem connected serially to my laptop in python - Larz60+ - Jan-07-2019

Read the error traceback, it's quite clear, on line 60:
Quote:serial.serialutil.SerialException: Attempting to use a port that is not open



RE: How to detect wireless modem connected serially to my laptop in python - barry76 - Jan-08-2019

(Jan-07-2019, 03:26 PM)Larz60+ Wrote: ard.open()

I already mentioned for opening the port as well as code is reading the port but still facing this issue can you suggest what will be useful here?


RE: How to detect wireless modem connected serially to my laptop in python - Gribouillis - Jan-08-2019

Perhaps if val1 in ser_dict is never true and ard.open() is never reached.