работа с COM

Ответить
gennady13
Сообщения: 2
Зарегистрирован: 20 сен 2016, 17:43

работа с COM

Сообщение gennady13 » 20 сен 2016, 17:49

приветствую. пишу приложение по передаче данных по VCOM, ну та же Moxa. не могу считать данные на приеме, передача проходит успешно, а вот принять не могу. в чем беда, кто-нибудь подскажет? код:
package com.example.usb_serial;

import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Arrays;

import android.app.Activity;
import android.app.AlertDialog;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.EditText;

import android_serialport_api.*;

public class MainActivity extends Activity {

AlertDialog.Builder builder;
int size = 0;

protected SerialPort mSerialPort;
protected SerialPortFinder mSerialPortFinder;
protected OutputStream mOutputStream;
private InputStream mInputStream;

private ReadThread mReadThread;
private SendingThread mSendingThread;

private byte[] buffer = new byte[1024];

private class ReadThread extends Thread {

@Override
public void run() {
super.run();
while(!isInterrupted()) {
if (mInputStream == null) return;
try {
size = mInputStream.read(buffer);
}
catch (IOException e) {
e.printStackTrace();
}
if (size > 0) {
onDataReceived(buffer, size);
}
}
}
}

private class SendingThread extends Thread {

@Override
public void run() {
Arrays.fill(buffer, (byte)0x09);
while (!isInterrupted()) {
try {
if (mOutputStream != null) {
mOutputStream.write(buffer);
}
else return;
}

catch (IOException e) {
e.printStackTrace();
return;
}
}
}
}

protected void onDataReceived(byte[] buffer, int size) {

}

public void onClickTrans(View view) {
mSendingThread = new SendingThread();
mSendingThread.start();

mReadThread = new ReadThread();
mReadThread.start();
}

public void onClickMes(View view) {
if(size == 0) {
builder.setMessage("Не получено");
builder.show();
}
else {
builder.setMessage("Получено");
builder.show();
}

}

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

builder = new AlertDialog.Builder(MainActivity.this);
builder.setPositiveButton("OK", null);

try {

mSerialPortFinder = new SerialPortFinder();

String[] entries = mSerialPortFinder.getAllDevices();
String[] paths = mSerialPortFinder.getAllDevicesPath();

for(int i = 0; i < paths.length; i++) {
if(paths.equals("/dev/ttyACM0")) {
mSerialPort = new SerialPort(new File(paths), 115200, 0);
break;
}
}

if(mSerialPort != null) {
mInputStream = mSerialPort.getInputStream();
mOutputStream = mSerialPort.getOutputStream();

}
}

catch (SecurityException e) {
e.printStackTrace();
}

catch (IOException e) {
e.printStackTrace();
}
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
}

gennady13
Сообщения: 2
Зарегистрирован: 20 сен 2016, 17:43

Re: работа с COM

Сообщение gennady13 » 20 сен 2016, 17:50

еще вопрос: как сгенерировать выполнение потока по прерыванию о приеме?

NightScream
Сообщения: 35
Зарегистрирован: 22 фев 2015, 23:18

Re: работа с COM

Сообщение NightScream » 24 сен 2016, 21:25

не хочется читать код, оформление отвратительное, ТЕГИ для кого придуманы????
Что делает MOXA?
Вы хотите забрать данные с RS232\RS485 MOXA через TCP\IP?
Да и не понятно

Код: Выделить всё

import android_serialport_api.*;
откуда?

Ответить