String über USB einlesen

P

Peter.Parker

Neues Mitglied
0
Hallo,

ich würde gerne einen Datenstring von RS232 über USB einlesen. Dabei bin ich auf das Digitus Android zu RS232-Kabel gestoßen. Leider habe ich keinen Ansatz wie ich das bewerkstelligen könnte. Kann mir jemand helfen?

Vielen Dank!
 
Hallo,
ich habe mich die letzte Zeit selbst etwas mit der Hardware von Android beschäftigt (wollte die IR-Diode vom LG G3 ansprechen und auslesen - leider mit eher mäßigem / gar keinem Erfolg).. In meiner Recherche bin ich auf eine API für serielle Schnittstellen gestoßen:
https://code.google.com/p/android-serialport-api/
Dazu gibt es auch eine App, aber auf meinem Gerät war die auch eher schlecht als recht.

Ansonsten kann ich dir leider nichts näheres sagen. In XDA gibts aber einige Beiträge, die Hardware-Hacks umfassen.
 
Vielen Dank für deine Antwort. Kann mir sonst noch jemand weiterhelfen?
 
Ich habe jetzt folgenden Code:

Code:
public class MainActivity extends Activity {

(...)
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    /* create editable text objects */
    readText = (EditText) findViewById(R.id.ReadValues);
    writeText = (EditText) findViewById(R.id.WriteValues);

    writeButton = (Button) findViewById(R.id.WriteButton);

    /* allocate buffer */
    writeBuffer = new byte[64];
    readBuffer = new byte[4096];
    readBufferToChar = new char[4096]; 
    actualNumBytes = new int[1];


    /* handle write click */
    writeButton.setOnClickListener(new View.OnClickListener() {

        // @Override
        public void onClick(View v) {

            if (writeText.length() != 0x00)
            {
                writeData();
            }
        }
    });

    uartInterface = new FT311UARTInterface(this);   
    uartInterface.SetConfig(baudRate, dataBit, stopBit, parity, flowControl);

    getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);

    handlerThread = new handler_thread(handler);
    handlerThread.start();



}


final Handler handler = new Handler() {
    @Override
    public void handleMessage(Message msg) {

        for(int i=0; i<actualNumBytes[0]; i++)
        {
            readBufferToChar[i] = (char)readBuffer[i];
        }
        appendData(readBufferToChar, actualNumBytes[0]);
    }
};

/* usb input data handler */
private class handler_thread extends Thread {
    Handler mHandler;

    /* constructor */
    handler_thread(Handler h) {
        mHandler = h;
    }

    public void run() {
        Message msg;

        while (true) {

            try {
                Thread.sleep(200);
            } catch (InterruptedException e) {
            }

            status = uartInterface.ReadData(4096, readBuffer,actualNumBytes);

            if (status == 0x00 &amp;&amp; actualNumBytes[0] > 0) {
                msg = mHandler.obtainMessage();
                mHandler.sendMessage(msg);
            }

        }
    }
}



public void writeData()
{
    String srcStr = writeText.getText().toString();     
    String destStr = "";

    String[] tmpStr = srcStr.split(" ");

}



public void appendData(char[] data, int len)
{
    if(len >= 1)         
        readSB.append(String.copyValueOf(data, 0, len));

        char[] ch = readSB.toString().toCharArray();
        String temp;
        StringBuilder tmpSB = new StringBuilder();

        readText.setText(tmpSB);

}
}

Allerdings funktioniert das noch nicht. Kann jemand helfen?

Ich kann nicht debuggen, da ich ja das Digitus Kabel im einzigen Anschluss habe. Deshalb weiß ich auch nicht wo es "hängt" und kann nicht genauer fragen.
 
Zuletzt bearbeitet:

Ähnliche Themen

A
Antworten
10
Aufrufe
1.944
swa00
swa00
P
Antworten
5
Aufrufe
3.905
MisterRoboto
MisterRoboto
S
Antworten
4
Aufrufe
4.582
mblaster4711
mblaster4711
Zurück
Oben Unten