User Tools

Site Tools


module:micropython:esp32udpclientserver:esp32udpclientserver02v03

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
module:micropython:esp32udpclientserver:esp32udpclientserver02v03 [2021/12/13 19:52] – [Übersicht] omdevelopmodule:micropython:esp32udpclientserver:esp32udpclientserver02v03 [2022/09/13 11:58] (current) – external edit 127.0.0.1
Line 9: Line 9:
  
 ===== Übersicht ===== ===== Übersicht =====
 +
 +Esp32-MicroPython-Software: \\ 
 +{{:module:python:UdpClientServer:2112132048_Esp32UdpClientServerTerminal.png?500|2112132048_Esp32UdpClientServerTerminal.png}}
    
 +
 ===== Benutzung ===== ===== Benutzung =====
  
Line 31: Line 35:
 import Thread as THR import Thread as THR
 import UdpClientServer as UCS import UdpClientServer as UCS
 +#
 +WLAN_SSID = 'FritzBoxSA7'
 +WLAN_PW = '01234567890123456789'
 # #
 UDP_HEADERID = 'UDPHID' UDP_HEADERID = 'UDPHID'
Line 36: Line 43:
 #   UDP - TxD - TransmitData #   UDP - TxD - TransmitData
 #----------------------------------------------------------- #-----------------------------------------------------------
-UDP_IPADDRESS_TX = '127.0.0.255'+UDP_IPADDRESS_TX = '192.168.178.255' NO broadcasting to local 
 +UDP_IPADDRESS_TX = '192.168.178.255'
 UDP_IPPORT_TX = 5000 UDP_IPPORT_TX = 5000
 # #
Line 42: Line 50:
 #   UDP - RxD - ReceiveData #   UDP - RxD - ReceiveData
 #----------------------------------------------------------- #-----------------------------------------------------------
-UDP_IPADDRESS_LOCAL = '127.0.0.1' # dummy +UDP_IPADDRESS_LOCAL = '192.168.178.71' # dummy 
-UDP_IPPORT_RX = 5000+UDP_IPPORT_RX = 5001
 #    #   
 #----------------------------------------------------------- #-----------------------------------------------------------
Line 57: Line 65:
     print(Line)     print(Line)
     return     return
-# +
-def CBOnStart(udpclientserver): +
-    # debug print('Main-CBOnStart'+
-    return +
-+
-def CBOnBusy(udpclientserver): +
-    # debug print('Main-CBOnBusy'+
-    return +
-+
-def CBOnAbort(udpclientserver): +
-    # debug print('Main-CBOnAbort'+
-    return +
-+
-def CBOnEnd(udpclientserver): +
-    # debug print('Main-CBOnEnd'+
-    return +
-#   +
 #----------------------------------------------------------- #-----------------------------------------------------------
 #   Main #   Main
Line 80: Line 72:
     #     #
     print('*** CheckUdpClientServer: begin')     print('*** CheckUdpClientServer: begin')
-    if (5 <= len(sys.argv)): 
-        # Analyse Arguments für Tx/Rx-Parameter 
-        UDP_HEADERID = sys.argv[1] 
-        # RX 
-        UDP_IPPORT_RX = int(sys.argv[2]) 
-        # TX 
-        UDP_IPADDRESS_TX = sys.argv[3] 
-        UDP_IPPORT_TX = int(sys.argv[4]) 
     #     #
-    UdpCS = UCS.CUdpClientServer(UDP_HEADERID, UDP_IPPORT_RX,+    MillisPreset = time.ticks_ms() - 100000 
 +    # 
 +    UdpCS = UCS.CUdpClientServer(WLAN_SSID, WLAN_PW, 
 +                                 UDP_HEADERID, UDP_IPPORT_RX,
                                  UDP_IPADDRESS_TX, UDP_IPPORT_TX,                                   UDP_IPADDRESS_TX, UDP_IPPORT_TX, 
-                                 CBOnTxData, CBOnRxData +                                 CBOnTxData, CBOnRxData) 
-                                 CBOnStart, CBOnBusy, CBOnAbort, CBOnEnd)+    UdpCS.Open()
     #             #        
     print('{}: TxIP-Address[{}]-Port[{}]'.format(UdpCS.GetHeaderID(),      print('{}: TxIP-Address[{}]-Port[{}]'.format(UdpCS.GetHeaderID(), 
                                                  UdpCS.GetIPAddressTX(),                                                   UdpCS.GetIPAddressTX(), 
                                                  UdpCS.GetIPPortTX()))                                                  UdpCS.GetIPPortTX()))
-    print('{}: RxIP(local)-Address[{}]-Port[{}]'.format(UdpCS.GetHeaderID(), +    print('{}: RxIP-Address[{}]-Port[{}](local)'.format(UdpCS.GetHeaderID(), 
                                                  UdpCS.GetIPAddressRXLocal(),                                                  UdpCS.GetIPAddressRXLocal(),
                                                  UdpCS.GetIPPortRX()))                                                  UdpCS.GetIPPortRX()))
-    UdpCS.Open() +    while UdpCS.IsBusy(): 
-    for I in range(0, 6): +        UdpCS.Execute() 
-        time.sleep(5.0+        if 10000 <= (time.ticks_ms() - MillisPreset): 
-        UdpCS.Transmit('{}[{}]'.format(I,UdpCS.GetHeaderID())) +            MillisPreset = time.ticks_ms(
-    time.sleep(1.0)+            UdpCS.Transmit('! Millis[{}]ms'.format(MillisPreset))
     UdpCS.Close()     UdpCS.Close()
     #     #
Line 116: Line 103:
 # #
 import time import time
-import enum as ENU 
 import socket as SKT import socket as SKT
-#+import network as NTW
 import Thread as THR import Thread as THR
 # #
 class CUdpClientServer(): class CUdpClientServer():
     #     #
-    def __init__(self, headerid, ipportrx, \+    def __init__(self, wlanssid, wlanpw, 
 +                 headerid, ipportrx, \
                  ipaddresstx, ipporttx, \                  ipaddresstx, ipporttx, \
-                 ontxdata, onrxdata, \ +                 ontxdata, onrxdata):    
-                 onstart, onbusy, onabort, onend):+        self.WlanSSID = wlanssid 
 +        self.WlanPW = wlanpw            
         self.HeaderID = headerid         self.HeaderID = headerid
         self.IPAddressRXLocal = ''         self.IPAddressRXLocal = ''
Line 134: Line 122:
         self.OnTxData = ontxdata         self.OnTxData = ontxdata
         self.OnRxData = onrxdata         self.OnRxData = onrxdata
-        self.OnStart = onstart 
-        self.OnBusy = onbusy 
-        self.OnAbort = onabort 
-        self.OnEnd = onend 
         self.Thread = THR.CThread(self.CBOnStart, self.CBOnBusy, \         self.Thread = THR.CThread(self.CBOnStart, self.CBOnBusy, \
                                   self.CBOnAbort, self.CBOnEnd)                                   self.CBOnAbort, self.CBOnEnd)
 +        self.Wlan = None
         self.RxSocket = None         self.RxSocket = None
         self.TxSocket = None         self.TxSocket = None
-        # find local IPAddress: +        # 
-        S = SKT.socket(SKT.AF_INET, SKT.SOCK_DGRAM) +        self.DEBUG False
-        S.connect(('8.8.8.8', 1)) +
-        self.IPAddressRXLocal S.getsockname()[0] +
-        S.close()+
         #         #
         return         return
Line 162: Line 144:
     #     #
     def IsBusy(self):     def IsBusy(self):
-        return THR.EStateThread.stBusy == self.Thread.State+        return THR.stBusy == self.Thread.State 
 +    # 
 +    def CBOnStart(self, thread): 
 +        if self.DEBUG: 
 +            print('UdpClientServer.CBOnStart'
 +        return     
 +    # 
 +    def CBOnBusy(self, thread): 
 +        if self.DEBUG: 
 +            print('UdpClientServer.CBOnBusy'
 +        while self.IsBusy(): 
 +            RxData = '' 
 +            try: 
 +                Data, Address = self.RxSocket.recvfrom(1024) 
 +                RxData = Data.decode('utf-8'
 +            except: 
 +                pass  
 +            else: 
 +                if self.DEBUG: 
 +                    print('!!!!!!!!RxData[{}]'.format(Data.decode('utf-8'))) 
 +                if (None != self.OnRxData): 
 +                    self.OnRxData(self, RxData) 
 +            finally: 
 +                time.sleep(0.1)             
 +        self.RxSocket.close() 
 +        return     
 +    # 
 +    def CBOnAbort(self, thread): 
 +        if self.DEBUG: 
 +            print('UdpClientServer.CBOnAbort'
 +        self.RxSocket.close() 
 +        return 
 +    # 
 +    def CBOnEnd(self, thread): 
 +        if self.DEBUG: 
 +            print('UdpClientServer.CBOnEnd'
 +        self.RxSocket.close() 
 +        return
     #     #
     def Open(self):     def Open(self):
 +        self.Wlan = NTW.WLAN(NTW.STA_IF)
 +        self.Wlan.active(False)
 +        self.Wlan.active(True)
 +        self.Wlan.connect(self.WlanSSID, self.WlanPW)
 +        while not(self.Wlan.isconnected()):
 +            pass
 +        self.IPAddressRXLocal = self.Wlan.ifconfig()[0]
 +        if self.DEBUG:
 +            print('Wlan-IDs[{}]'.format(self.Wlan.ifconfig()))
 +            print('Wlan-LocalIPAddress[{}]'.format(self.IPAddressRXLocal))
         # Rx         # Rx
-        if (THR.EStateThread.stBusy == self.Thread.State):+        if (THR.stBusy == self.Thread.State):
             self.Thread.Abort()             self.Thread.Abort()
         self.RxSocket = SKT.socket(SKT.AF_INET, SKT.SOCK_DGRAM)         self.RxSocket = SKT.socket(SKT.AF_INET, SKT.SOCK_DGRAM)
Line 180: Line 209:
     #     #
     def Close(self):     def Close(self):
 +        if self.DEBUG:
 +            print('UdpClientServer.Close')
         self.Thread.Abort()         self.Thread.Abort()
         self.RxSocket.close()         self.RxSocket.close()
Line 185: Line 216:
     #     #
     def Abort(self):     def Abort(self):
 +        if self.DEBUG:
 +            print('UdpClientServer.Abort')
         self.Thread.Abort()         self.Thread.Abort()
         return         return
     #     #
     def Transmit(self, text):     def Transmit(self, text):
 +        if self.DEBUG:
 +            print('UdpClientServer.Transmit')
         if (None != self.OnTxData):         if (None != self.OnTxData):
             self.OnTxData(self, text)             self.OnTxData(self, text)
         self.TxSocket.sendto(text.encode('utf-8'), \         self.TxSocket.sendto(text.encode('utf-8'), \
-                                         (self.IPAddressTX, self.IPPortTX))            +                                         (self.IPAddressTX, self.IPPortTX))
     #     #
-    def CBOnStart(self, thread): +    def Execute(self): 
-        if (None !self.OnStart): +        return 
-            self.OnStart(self+    #      
-        return    +
 +#----------------------------------------------------------- 
 +#   Check UdpClientServer 
 +#----------------------------------------------------------- 
 +WLAN_SSID 'FritzBoxSA7' 
 +WLAN_PW = '01234567890123456789' 
 +
 +UDP_HEADERID = 'UDPHID' 
 +#----------------------------------------------------------- 
 +#   UDP - TxD - TransmitData 
 +#----------------------------------------------------------- 
 +# UDP_IPADDRESS_TX = '192.168.178.255' NO broadcasting to local 
 +UDP_IPADDRESS_TX = '192.168.178.71' 
 +UDP_IPPORT_TX = 5000 
 +
 +#----------------------------------------------------------- 
 +#   UDP - RxD - ReceiveData 
 +#----------------------------------------------------------- 
 +UDP_IPADDRESS_LOCAL = '192.168.178.71' # dummy 
 +UDP_IPPORT_RX = 5000 
 +#    
 +#----------------------------------------------------------- 
 +#   Callback - UdpClient 
 +#----------------------------------------------------------- 
 +def CBOnTxData(udpclientserver, txdata): 
 +    Line = 'UdpClientServer.CBOnTxData[{}]<{}>'.format(udpclientserver.GetHeaderID(), txdata
 +    print(Line) 
 +    return 
 +
 +def CBOnRxData(udpclientserver, rxdata): 
 +    Line = 'UdpClientServer.CBOnRxData[{}]<{}>'.format(udpclientserver.GetHeaderID(), rxdata) 
 +    print(Line) 
 +    return 
 +
 +if ('__main__' == __name__):
     #     #
-    def CBOnBusy(self, thread): +    print('*** Check UdpClientServerbegin'       
-        while self.IsBusy(): +
-            RxData = '+
-            try: +
-                Data, Address = self.RxSocket.recvfrom(1024) +
-                RxData = Data.decode('utf-8'+
-            except SKT.error: +
-                pass  +
-            else: +
-                # print('RxData[{}]'.format(Data.decode('utf-8'))) +
-                if (None != self.OnRxData): +
-                    self.OnRxData(self, RxData) +
-            finally: +
-                time.sleep(0.1)             +
-                if (None != self.OnBusy): +
-                    self.OnBusy(self) +
-        self.RxSocket.close() +
-        return    +
     #     #
-    def CBOnAbort(selfthread): +    UdpCS = CUdpClientServer(WLAN_SSID, WLAN_PW
-        self.RxSocket.close() +                             UDP_HEADERID, UDP_IPPORT_RX, 
-        if (None != self.OnAbort): +                             UDP_IPADDRESS_TX, UDP_IPPORT_TX,  
-            self.OnAbort(self) +                             CBOnTxData, CBOnRxData
-        return+    UdpCS.Open()    
     #     #
-    def CBOnEnd(self, thread): +    print('{}TxIP-Address[{}]-Port[{}]'.format(UdpCS.GetHeaderID() 
-        self.RxSocket.close() +                                                 UdpCS.GetIPAddressTX(),  
-        if (None != self.OnEnd): +                                                 UdpCS.GetIPPortTX())) 
-            self.OnEnd(self+    print('{}RxIP-Address[{}]-Port[{}](local)'.format(UdpCS.GetHeaderID(),  
-        return+                                                 UdpCS.GetIPAddressRXLocal(), 
 +                                                 UdpCS.GetIPPortRX()))
     #     #
-#+    UdpCS.Transmit('HalloA'
 +    time.sleep(1.0) 
 +    UdpCS.Transmit('HalloB'
 +    time.sleep(1.0) 
 +    UdpCS.Transmit('HalloC'
 +    time.sleep(1.0) 
 +    # 
 +    UdpCS.Close()  
 +    # 
 +    print('*** Check UdpClientServer: end'
 +    # 
 +
 </code> </code>
  
Line 273: Line 337:
         return         return
     #     #
 +
 +#
 #    #   
 #----------------------------------------------------------- #-----------------------------------------------------------
Line 300: Line 366:
 if ('__main__' == __name__): if ('__main__' == __name__):
     #     #
-    print('*** CheckThread: begin'       +    print('*** Check Thread: begin'       
     #     #
     Thread = CThread(CBOnStart, CBOnBusy, CBOnAbort, CBOnEnd)     Thread = CThread(CBOnStart, CBOnBusy, CBOnAbort, CBOnEnd)
Line 307: Line 373:
     Thread.Abort()     Thread.Abort()
     #     #
-    print('*** CheckThread: end')+    print('*** Check Thread: end')
     #     #
 # #
-</code> 
- 
-MicroPython-Terminal-Commands (Comments in Helper.h): 
-<code python> 
-> import os 
-> print(os.listdir()) 
-</code> 
- 
-**Ampy**-Commands: 
-<code python> 
-> ampy -p COM22 ls 
-</code> 
-<code python> 
-> ampy -p COM22 rm /project.pymakr 
-</code> 
-<code python> 
-> ampy -p COM22 reset 
-</code> 
- 
-!!! NOCH ERGÄNZEN !!! 
-Ausgabe in Terminal: 
-<code python> 
 </code> </code>
  
module/micropython/esp32udpclientserver/esp32udpclientserver02v03.1639421529.txt.gz · Last modified: 2021/12/13 20:52 (external edit)