Schnittstellenverwaltung für u.a NMEA0183 verbessert
This commit is contained in:
		
							parent
							
								
									b06d88d0ec
								
							
						
					
					
						commit
						aefd01e0f9
					
				|  | @ -11,6 +11,14 @@ mouseptr = on | ||||||
| win_x = -1 | win_x = -1 | ||||||
| win_y = -1 | win_y = -1 | ||||||
| 
 | 
 | ||||||
|  | [can] | ||||||
|  | enabled = false | ||||||
|  | interface = can0 | ||||||
|  | 
 | ||||||
|  | [nmea0183] | ||||||
|  | enabled = false | ||||||
|  | port = /dev/ttyV1 | ||||||
|  | 
 | ||||||
| [bme280] | [bme280] | ||||||
| enabled = false | enabled = false | ||||||
| port = 1 | port = 1 | ||||||
|  | @ -21,7 +29,6 @@ enabled = false | ||||||
| port = /dev/ttyACM0 | port = /dev/ttyACM0 | ||||||
| 
 | 
 | ||||||
| [opencpn] | [opencpn] | ||||||
| port = /dev/ttyV1 |  | ||||||
| navobj = ~/.opencpn/navobj.xml | navobj = ~/.opencpn/navobj.xml | ||||||
| config = ~/.opencpn/opencpn.conf | config = ~/.opencpn/opencpn.conf | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
							
								
								
									
										35
									
								
								obp60v.py
								
								
								
								
							
							
						
						
									
										35
									
								
								obp60v.py
								
								
								
								
							|  | @ -8,6 +8,9 @@ Zwei Displayvarianten | ||||||
|   2. Fullscreen Display skaliert mit 1,6 ergibt 640x480 |   2. Fullscreen Display skaliert mit 1,6 ergibt 640x480 | ||||||
|      mit Platz für große Touch-Flächen am rechten Rand |      mit Platz für große Touch-Flächen am rechten Rand | ||||||
| 
 | 
 | ||||||
|  | Das Gerät kann Daten von NMEA2000 und NMEA0183 empfangen, sowie von | ||||||
|  | einem lokal angeschlossenen GPS-Empfänger. | ||||||
|  | 
 | ||||||
| NMEA2000 | NMEA2000 | ||||||
|   deviceclass: 120 - Display |   deviceclass: 120 - Display | ||||||
|   devicefunction: 130 - Display |   devicefunction: 130 - Display | ||||||
|  | @ -120,9 +123,9 @@ cfg = { | ||||||
|     'bme280': False |     'bme280': False | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| def rxd_n2k(): | def rxd_n2k(device): | ||||||
|     setthreadtitle("N2Klistener") |     setthreadtitle("N2Klistener") | ||||||
|     bus = can.Bus(interface='socketcan', channel='can0', bitrate=250000); |     bus = can.Bus(interface='socketcan', channel=device, bitrate=250000); | ||||||
|     wip = False |     wip = False | ||||||
|     sc = 0 |     sc = 0 | ||||||
|     nf = 0 |     nf = 0 | ||||||
|  | @ -196,7 +199,7 @@ def rxd_0183(devname): | ||||||
|     try: |     try: | ||||||
|         ser = serial.Serial(devname, 115200, timeout=3) |         ser = serial.Serial(devname, 115200, timeout=3) | ||||||
|     except serial.SerialException as e: |     except serial.SerialException as e: | ||||||
|         print("OpenCPN serial port not available") |         print("NMEA0183 serial port not available") | ||||||
|         return |         return | ||||||
|     setthreadtitle("0183listener") |     setthreadtitle("0183listener") | ||||||
|     while not shutdown: |     while not shutdown: | ||||||
|  | @ -218,6 +221,8 @@ def rxd_0183(devname): | ||||||
|         elif msg.sentence_type == 'RTE': |         elif msg.sentence_type == 'RTE': | ||||||
|             # Route |             # Route | ||||||
|             print(msg.fields) |             print(msg.fields) | ||||||
|  |         else: | ||||||
|  |             print(msg) | ||||||
|     ser.close() |     ser.close() | ||||||
| 
 | 
 | ||||||
| def datareader(histpath, history): | def datareader(histpath, history): | ||||||
|  | @ -625,6 +630,14 @@ if __name__ == "__main__": | ||||||
|         cfg['win_x'] = -1 |         cfg['win_x'] = -1 | ||||||
|         cfg['win_y'] = -1 |         cfg['win_y'] = -1 | ||||||
| 
 | 
 | ||||||
|  |     cfg['can'] = config.getboolean('can', 'enabled') | ||||||
|  |     if cfg['can']: | ||||||
|  |         cfg['can_intf'] = config.get('can', 'interface') | ||||||
|  | 
 | ||||||
|  |     cfg['nmea0183'] = config.getboolean('nmea0183', 'enabled') | ||||||
|  |     if cfg['nmea0183']: | ||||||
|  |         cfg['0183_port'] = config.get('nmea0183', 'port') | ||||||
|  | 
 | ||||||
|     cfg['gps'] = config.getboolean('gps', 'enabled') |     cfg['gps'] = config.getboolean('gps', 'enabled') | ||||||
|     if cfg['gps']: |     if cfg['gps']: | ||||||
|         cfg['gps_port'] = config.get('gps', 'port') |         cfg['gps_port'] = config.get('gps', 'port') | ||||||
|  | @ -638,27 +651,29 @@ if __name__ == "__main__": | ||||||
|         history = History("press", 75) |         history = History("press", 75) | ||||||
|         boatdata.addHistory(history, "press") |         boatdata.addHistory(history, "press") | ||||||
| 
 | 
 | ||||||
|     cfg['ocpn_port'] = config.get('opencpn', 'port') |  | ||||||
| 
 |  | ||||||
|     if cfg['simulation']: |     if cfg['simulation']: | ||||||
|         boatdata.enableSimulation() |         boatdata.enableSimulation() | ||||||
| 
 | 
 | ||||||
|     profile = init_profile(config, cfg, boatdata) |     profile = init_profile(config, cfg, boatdata) | ||||||
| 
 | 
 | ||||||
|     if not cfg['simulation']: |     # Schnittstellen aktivieren | ||||||
|         t_rxd_n2k = threading.Thread(target=rxd_n2k) |     if cfg['can']: | ||||||
|  |         t_rxd_n2k = threading.Thread(target=rxd_n2k, args=(cfg['can_intf'],)) | ||||||
|         t_rxd_n2k.start() |         t_rxd_n2k.start() | ||||||
|         t_rxd_0183 = threading.Thread(target=rxd_0183, args=(cfg['ocpn_port'],)) |     if cfg['nmea0183']: | ||||||
|  |         t_rxd_0183 = threading.Thread(target=rxd_0183, args=(cfg['0183_port'],)) | ||||||
|         t_rxd_0183.start() |         t_rxd_0183.start() | ||||||
| 
 |     if not cfg['simulation']: | ||||||
|         t_data = threading.Thread(target=datareader, args=(cfg['histpath'], history)) |         t_data = threading.Thread(target=datareader, args=(cfg['histpath'], history)) | ||||||
|         t_data.start() |         t_data.start() | ||||||
| 
 | 
 | ||||||
|     app = Frontend(cfg, owndevice, boatdata, profile) |     app = Frontend(cfg, owndevice, boatdata, profile) | ||||||
|     app.run() |     app.run() | ||||||
|     shutdown = True |     shutdown = True | ||||||
|     if not cfg['simulation']: |     if cfg['can']: | ||||||
|         t_rxd_n2k.join() |         t_rxd_n2k.join() | ||||||
|  |     if cfg['nmea0183']: | ||||||
|         t_rxd_0183.join() |         t_rxd_0183.join() | ||||||
|  |     if not cfg['simulation']: | ||||||
|         t_data.join() |         t_data.join() | ||||||
|     print("Another fine product of the Sirius Cybernetics Corporation.") |     print("Another fine product of the Sirius Cybernetics Corporation.") | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue