LAMW arduino serial comm via android usb otg
lazarus / 43-Android
----------------------------------------------------------------------
Mongkey · 2023-12-15 07:52
https://hingxyu.medium.com/arduino-android-serial-
communication-b72b124142fb
----------------------------------------------------------------------
jmpessoa · 2023-12-17 04:59
Done!
New "jsArduinoAflakSerial" component! (need tests!)
New demo: "AppCompatArduinoAflakSerialDemo1" (need tests!)
Thank you!
----------------------------------------------------------------------
Mongkey · 2023-12-17 10:59
@mr jmpessoa this spinner need to be commited,
https://forum.lazarus.freepascal.org/index.php/topic,65168.0.html
Thank you
----------------------------------------------------------------------
jmpessoa · 2023-12-17 16:52
Done!
2 days ago!
----------------------------------------------------------------------
Mongkey · 2023-12-18 03:03
Ok
----------------------------------------------------------------------
Mongkey · 2025-05-11 15:23
after 2 years , failed to load aflak serial, thank you
----------------------------------------------------------------------
jmpessoa · 2025-05-21 21:21
Hi, Mongkey!
Can you look for:
Code: Pascal [Select][+][-]window.onload = function(){var x1 =
document.getElementById("main_content_section"); if (x1) { var x =
document.getElementsByClassName("geshi");for (var i = 0; i public
java.lang.Object jsArduinoAflakSerial_jCreate(long _self) { return
(java.lang.Object)(new jsArduinoAflakSerial(this,_self));} in your
project "Controls.java" file? (at end of file....)
----------------------------------------------------------------------
Mongkey · 2025-05-24 07:25
i could not find this object, mr. pessoa, i even not seeing
jsArduinoAflakSerial.java at source directory.
i used https://github.com/ksksue/PhysicaloidLibrary/tree/master ,
openotg aia sample, this lib using ai2 inventor for arduino it succeed
reading cdc type usb, ch340x type usb
----------------------------------------------------------------------
jmpessoa · 2025-05-24 17:38
Can you try/reload "AppCompatArduinoAflakSerialDemo1" ??
----------------------------------------------------------------------
Mongkey · 2025-05-25 02:33
i got this error, thank you
----------------------------------------------------------------------
Mongkey · 2025-05-25 07:01
it was run, but nothing happened, i did wireless debugging for
testing, i got this, ha ha this kind of a hard component development
Code: Pascal [Select][+][-]window.onload = function(){var x1 =
document.getElementById("main_content_section"); if (x1) { var x =
document.getElementsByClassName("geshi");for (var i = 0; i type=1400
audit(0.0:270327): avc: denied { getopt } for
path="/dev/socket/usap_pool_secondary"
scontext=u:r:untrusted_app_30:s0:c18,c257,c512,c768
tcontext=u:r:zygote:s0 tclass=unix_stream_socket permissive=0
app=org.lamw.applamwproject1
thank you
----------------------------------------------------------------------
Mongkey · 2025-05-25 09:15
May be this jar library is more easy to use on pascal, thank you,
https://github.com/ksksue/PhysicaloidLibrary/blob/master/PhysicaloidLi
brary/bin/physicaloidlibrary.jar
Code: Pascal [Select][+][-]window.onload = function(){var x1 =
document.getElementById("main_content_section"); if (x1) { var x =
document.getElementsByClassName("geshi");for (var i = 0; i package
com.physicaloid.tutorial1; import
java.io.UnsupportedEncodingException; import
android.app.Activity;import android.os.Bundle;import
android.util.Log;import android.view.View;import
android.widget.Button;import android.widget.EditText;import
android.widget.TextView; import
com.physicaloid.lib.Physicaloid; public class Tutorial1Activity
extends Activity { private static final String TAG =
Tutorial1Activity.class.getSimpleName(); /* * !!! You need to
import PhysicaloidLibrary. !!! * If you have errors, check Project
-> Properties -> Android -> Library. */ /* * In this
tutorial, You can learn * - how to use open/close/read/write
* * You might check TODO tags. */
//****************************************************************
// TODO : Add to AndroidManifest.xml
//****************************************************************
Button btOpen, btClose, btRead, btWrite; EditText etWrite;
TextView tvRead; Physicaloid mPhysicaloid; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_tutorial1); btOpen =
(Button) findViewById(R.id.btOpen); btClose = (Button)
findViewById(R.id.btClose); btRead = (Button)
findViewById(R.id.btRead); btWrite = (Button)
findViewById(R.id.btWrite); etWrite = (EditText)
findViewById(R.id.etWrite); tvRead = (TextView)
findViewById(R.id.tvRead); setEnabledUi(false);
//****************************************************************
// TODO : create a new instance mPhysicaloid = new
Physicaloid(this);
//****************************************************************
} public void onClickOpen(View v) {
//****************************************************************
// TODO : open a device if(mPhysicaloid.open()) { // default
9600bps setEnabledUi(true); }
//****************************************************************
} public void onClickClose(View v) {
//****************************************************************
// TODO : close the device if(mPhysicaloid.close()) {
setEnabledUi(false); }
//****************************************************************
} public void onClickRead(View v) { byte[] buf = new
byte[256]; int readSize=0;
//****************************************************************
// TODO : read from the device to a buffer and get read size
readSize = mPhysicaloid.read(buf);
//****************************************************************
if(readSize>0) { String str; try {
str = new String(buf, "UTF-8");
tvRead.append(str); } catch (UnsupportedEncodingException
e) { Log.e(TAG,e.toString()); } }
} public void onClickWrite(View v) { String str =
etWrite.getText().toString(); if(str.length()>0) {
byte[] buf = str.getBytes();
//****************************************************************
// TODO : write a buffer to the device
mPhysicaloid.write(buf, buf.length);
//****************************************************************
} } private void setEnabledUi(boolean on) { if(on) {
btOpen.setEnabled(false);
btClose.setEnabled(true); btRead.setEnabled(true);
btWrite.setEnabled(true); etWrite.setEnabled(true);
tvRead.setEnabled(true); } else {
btOpen.setEnabled(true); btClose.setEnabled(false);
btRead.setEnabled(false); btWrite.setEnabled(false);
etWrite.setEnabled(false);
tvRead.setEnabled(false); } }}
----------------------------------------------------------------------
Mongkey · 2025-08-23 15:43
Code: Pascal [Select][+][-]window.onload = function(){var x1 =
document.getElementById("main_content_section"); if (x1) { var x =
document.getElementsByClassName("geshi");for (var i = 0; i package
org.lamw.physicaloidbridge; import android.app.Activity;import
android.os.Environment;import android.util.Log;import
com.physicaloid.lib.Physicaloid;import
com.physicaloid.lib.Boards;import
com.physicaloid.lib.programmer.avr.UploadErrors;import
com.physicaloid.lib.programmer.avr.UploadListener;import
com.physicaloid.lib.usb.driver.uart.ReadLisener; public class
PhysicaloidBridge { private Physicaloid physicaloid; private
StringBuilder receivedData = new StringBuilder(); public
PhysicaloidBridge(Activity activity) { physicaloid = new
Physicaloid(activity); } public boolean open() { return
physicaloid.open(); } public void close() {
physicaloid.close(); } public boolean isOpened() {
return physicaloid.isOpened(); } public void write(String text)
{ if (isOpened()) {
physicaloid.write(text.getBytes(), text.length()); } }
public void addReadListener() { if (isOpened()) {
physicaloid.addReadListener(new ReadLisener() {
@Override public void onRead(int size) {
byte[] buf = new byte[size];
physicaloid.read(buf, size); String str = new
String(buf); receivedData.append(str);
Log.d("PhysicaloidBridge", "Received: " + str);
} }); } } public String getReceivedData() {
String data = receivedData.toString();
receivedData.setLength(0); // clear buffer return data; }
public void uploadHexFile(String hexFilePath) {
physicaloid.upload(Boards.ARDUINO_UNO, hexFilePath, new
UploadListener() { @Override public void
onUploading(int value) { Log.d("PhysicaloidBridge",
"Uploading: " + value + "%"); } @Override
public void onUploadSuccess() {
Log.d("PhysicaloidBridge", "Upload success!"); }
@Override public void onUploadFailed(UploadErrors err) {
Log.e("PhysicaloidBridge", "Upload failed: " +
err.toString()); } @Override public
void onUploadCanceled() { Log.d("PhysicaloidBridge",
"Upload canceled."); } }); }}
----------------------------------------------------------------------
Mongkey · 2025-08-23 15:46
gradle
Code: Pascal [Select][+][-]window.onload = function(){var x1 =
document.getElementById("main_content_section"); if (x1) { var x =
document.getElementsByClassName("geshi");for (var i = 0; i
dependencies { implementation
files('libs/physicaloidlibrary.jar')}
manifest
Code: Pascal [Select][+][-]window.onload = function(){var x1 =
document.getElementById("main_content_section"); if (x1) { var x =
document.getElementsByClassName("geshi");for (var i = 0; i
for uploading more arduino boards with option "hex" file
Code: Pascal [Select][+][-]window.onload = function(){var x1 =
document.getElementById("main_content_section"); if (x1) { var x =
document.getElementsByClassName("geshi");for (var i = 0; i public void
uploadHexFile(String boardName, String hexFilePath) { Boards board
= Boards.ARDUINO_UNO; // default switch (boardName.toLowerCase())
{ case "uno": board = Boards.ARDUINO_UNO;
break; case "mega": case "mega2560": board =
Boards.ARDUINO_MEGA2560; break; case "nano":
board = Boards.ARDUINO_NANO; break; case
"leonardo": board = Boards.ARDUINO_LEONARDO;
break; case "micro": board = Boards.ARDUINO_MICRO;
break; case "pro": case "promini":
board = Boards.ARDUINO_PROMINI; break; case
"duemilanove": board = Boards.ARDUINO_DUEMILANOVE;
break; // add others as needed default:
Log.w("PhysicaloidBridge", "Unknown board: " + boardName + ",
defaulting to UNO"); } physicaloid.upload(board, hexFilePath,
new UploadListener() { @Override public void
onUploading(int value) { Log.d("PhysicaloidBridge",
"Uploading: " + value + "%"); } @Override public
void onUploadSuccess() { Log.d("PhysicaloidBridge", "Upload
success!"); } @Override public void
onUploadFailed(UploadErrors err) {
Log.e("PhysicaloidBridge", "Upload failed: " + err.toString());
} @Override public void onUploadCanceled() {
Log.d("PhysicaloidBridge", "Upload canceled."); } });}
This one created by using AI help.