Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- (bware) m@cker:~/Desktop/plc_toggle$ briefcase run android )^J return self._native.read(timeout_ms)^JPY^J
- -- Android device ------------------------------------------------------------
- Select Android device to use:
- 1) moto g stylus 5G 2024 (ZY22KHMP52)
- 2) @Medium_Phone_API_36.1 (emulator)
- 3) @beePhone (emulator)
- 4) Create a new Android emulator
- Android device: 3
- In future, you can specify this device by running:
- $ briefcase run android -d "@beePhone"
- [plc_toggle] Starting emulator beePhone...
- Starting emulator... done
- [plc_toggle] Starting app on @beePhone (running emulator) (device ID emulator-5554)
- [plc_toggle] Installing app...
- Stopping old versions of the app... done
- Installing new app version... done
- Launching app... done
- [plc_toggle] Following device log output (type CTRL-C to stop log)...
- ===========================================================================
- --------- beginning of main
- I/ware.plc_toggl: Late-enabling -Xcheck:jni
- W/ware.plc_toggl: Unexpected CPU variant for X86 using defaults: x86_64
- D/CompatibilityChangeReporter: Compat change id reported: 171979766; UID 10105; state: ENABLED
- V/GraphicsEnvironment: ANGLE Developer option for 'org.beeware.plc_toggle' set to: 'default'
- V/GraphicsEnvironment: Neither updatable production driver nor prerelease driver is supported.
- D/NetworkSecurityConfig: Using Network Security Config from resource network_security_config debugBuild: true
- D/NetworkSecurityConfig: Using Network Security Config from resource network_security_config debugBuild: true
- D/libEGL : loaded /vendor/lib64/egl/libEGL_emulation.so
- D/libEGL : loaded /vendor/lib64/egl/libGLESv1_CM_emulation.so
- D/libEGL : loaded /vendor/lib64/egl/libGLESv2_emulation.so
- D/MainActivity: onCreate() start
- W/ware.plc_toggl: Accessing hidden method Landroid/view/View;->computeFitSystemWindows(Landroid/graphics/Rect;Landroid/graphics/Rect;)Z (unsupported, reflection, allowed)
- W/ware.plc_toggl: Accessing hidden method Landroid/view/ViewGroup;->makeOptionalFitsSystemWindows()V (unsupported, reflection, allowed)
- D/MainActivity: Starting Python
- W/native.stderr: Could not find platform independent libraries <prefix>
- W/native.stderr: Could not find platform dependent libraries <exec_prefix>
- D/MainActivity: Running main module plc_toggle
- D/AndroidRuntime: Shutting down VM
- --------- beginning of crash
- E/AndroidRuntime: FATAL EXCEPTION: main
- E/AndroidRuntime: Process: org.beeware.plc_toggle, PID: 4136
- E/AndroidRuntime: java.lang.RuntimeException: Unable to start activity ComponentInfo{org.beeware.plc_toggle/org.beeware.android.MainActivity}: com.chaquo.python.PyException: ModuleNotFoundError: No module named 'plc_toggle.android_bridge'
- E/AndroidRuntime: at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3635)
- E/AndroidRuntime: at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3792)
- E/AndroidRuntime: at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:103)
- E/AndroidRuntime: at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
- E/AndroidRuntime: at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
- E/AndroidRuntime: at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2210)
- E/AndroidRuntime: at android.os.Handler.dispatchMessage(Handler.java:106)
- E/AndroidRuntime: at android.os.Looper.loopOnce(Looper.java:201)
- E/AndroidRuntime: at android.os.Looper.loop(Looper.java:288)
- E/AndroidRuntime: at android.app.ActivityThread.main(ActivityThread.java:7839)
- E/AndroidRuntime: at java.lang.reflect.Method.invoke(Native Method)
- E/AndroidRuntime: at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548)
- E/AndroidRuntime: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1003)
- E/AndroidRuntime: Caused by: com.chaquo.python.PyException: ModuleNotFoundError: No module named 'plc_toggle.android_bridge'
- E/AndroidRuntime: at <python>.plc_toggle.app.<module>(app.py:26)
- E/AndroidRuntime: at <python>.java.chaquopy.import_override(import.pxi:60)
- E/AndroidRuntime: at <python>.__main__.<module>(__main__.py:1)
- E/AndroidRuntime: at <python>.runpy._run_code(<frozen runpy>:88)
- E/AndroidRuntime: at <python>.runpy._run_module_code(<frozen runpy>:98)
- E/AndroidRuntime: at <python>.runpy.run_module(<frozen runpy>:226)
- E/AndroidRuntime: at <python>.chaquopy_java.call(chaquopy_java.pyx:352)
- E/AndroidRuntime: at <python>.chaquopy_java.Java_com_chaquo_python_PyObject_callAttrThrowsNative(chaquopy_java.pyx:324)
- E/AndroidRuntime: at com.chaquo.python.PyObject.callAttrThrowsNative(Native Method)
- E/AndroidRuntime: at com.chaquo.python.PyObject.callAttrThrows(PyObject.java:232)
- E/AndroidRuntime: at com.chaquo.python.PyObject.callAttr(PyObject.java:221)
- E/AndroidRuntime: at org.beeware.android.MainActivity.onCreate(MainActivity.java:105)
- E/AndroidRuntime: at android.app.Activity.performCreate(Activity.java:8051)
- E/AndroidRuntime: at android.app.Activity.performCreate(Activity.java:8031)
- E/AndroidRuntime: at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1329)
- E/AndroidRuntime: at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3608)
- E/AndroidRuntime: ... 12 more
- I/Process : Sending signal. PID: 4136 SIG: 9
- ##################################################################################################
- import toga
- from toga.style import Pack
- class PlcToggleApp(toga.App):
- def startup(self):
- box = toga.Box(style=Pack(direction="column", padding=20))
- label = toga.Label("UI loaded", style=Pack(padding_bottom=10))
- box.add(label)
- self.main_window = toga.MainWindow(title=self.formal_name)
- self.main_window.content = box
- self.main_window.show()
- def main():
- return PlcToggleApp("PLC Toggle", "org.beeware.plc_toggle")
- '''
- #Desktop/plc_toggle/src/plc_toggle/app.py
- # sanity check:: The code above works, the code below crashes.
- import toga
- from toga.style import Pack
- from toga.style.pack import COLUMN, ROW
- from .android_bridge import AndroidSerialClient
- from .plc_protocol import make_write_q_frame
- class PlcToggleApp(toga.App):
- def startup(self):
- self.client = AndroidSerialClient()
- self.output_state = False
- self.port_input = toga.TextInput(value="/dev/ttyS4", style=Pack(flex=1))
- self.baud_input = toga.TextInput(value="19200", style=Pack(width=100, padding_left=8))
- self.device_input = toga.TextInput(value="FF", style=Pack(width=80, padding_left=8))
- self.q_input = toga.TextInput(value="Q0", style=Pack(width=80, padding_left=8))
- self.status = toga.MultilineTextInput(
- readonly=True,
- style=Pack(flex=1, padding_top=10)
- )
- open_btn = toga.Button("Open", on_press=self.open_port, style=Pack(padding_right=8))
- close_btn = toga.Button("Close", on_press=self.close_port, style=Pack(padding_right=8))
- toggle_btn = toga.Button("Toggle Output", on_press=self.toggle_output)
- controls = toga.Box(
- style=Pack(direction=COLUMN, padding=12),
- children=[
- toga.Label("Serial Port"),
- self.port_input,
- toga.Label("Baud", style=Pack(padding_top=8)),
- self.baud_input,
- toga.Label("PLC Device", style=Pack(padding_top=8)),
- self.device_input,
- toga.Label("Output", style=Pack(padding_top=8)),
- self.q_input,
- toga.Box(
- style=Pack(direction=ROW, padding_top=12),
- children=[open_btn, close_btn, toggle_btn],
- ),
- self.status,
- ],
- )
- self.main_window = toga.MainWindow(title=self.formal_name)
- self.main_window.content = controls
- self.main_window.show()
- def log(self, msg: str):
- current = self.status.value or ""
- self.status.value = current + msg + "\n"
- async def open_port(self, widget):
- try:
- ok = self.client.open(
- port=self.port_input.value.strip(),
- baud=int(self.baud_input.value.strip()),
- )
- self.log(f"open={ok}")
- except Exception as e:
- self.log(f"open error: {e}")
- async def close_port(self, widget):
- try:
- self.client.close()
- self.log("closed")
- except Exception as e:
- self.log(f"close error: {e}")
- async def toggle_output(self, widget):
- try:
- q_name = self.q_input.value.strip().upper()
- device = self.device_input.value.strip().upper()
- self.output_state = not self.output_state
- frame = make_write_q_frame(q_name, int(self.output_state), device=device)
- self.log(f"tx: {frame.hex()}")
- self.client.write_bytes(frame)
- reply = self.client.read_once(500)
- if reply is None:
- self.log("rx: <no reply>")
- else:
- self.log(f"rx: {reply.hex()}")
- except Exception as e:
- self.log(f"toggle error: {e}")
- def main():
- return PlcToggleApp("PLC Toggle", "org.beeware.plctoggle")
- '''
Advertisement
Add Comment
Please, Sign In to add comment