PCCar.ru - Ваш автомобильный компьютер

Вернуться   PCCar.ru - Ваш автомобильный компьютер > MP3Car ТехИнфа > AndroidCar > Для новичков

Ответ
 
Опции темы Поиск в этой теме
Старый 22.11.2015, 12:08   #1
T_r_D
Старший Пользователь
 
Регистрация: 03.07.2015
Регион: 77, 97, 99, 177
Сообщений: 376
T_r_D is a glorious beacon of lightT_r_D is a glorious beacon of lightT_r_D is a glorious beacon of lightT_r_D is a glorious beacon of lightT_r_D is a glorious beacon of light
По умолчанию Arduino+android USB

Есть те кто решил это?
Есть в инете библиотека которая во вложении.
То что нужно, но не могу разобраться.
Она походу одна на всех.
Пишет про неё и этот
https://github.com/felHR85/UsbSerial
и
http://felhr85.net/2014/11/11/usbser...-android-v2-0/

У второго собственно скачен архив.
Пробую в Андроид студио повторить их подвиг, но получаю грабли!

Коннектим JAR.
в PROJECTNAME/app/libs кидаем .jar
В Андройд студио слева в окне где проект тычем правой кнопкой в app и выбираем new>module
Тычем в Import .JAR/.AAR Ppackage
Выбираем путь до .jar библиотеке (по идеи можно просто рестарт проекта сделать и библиотека сама подключится если она лежит в каталоге libs), добавляем.
В результате слева получаем вместе с app ещё и UsbSerial

Создаём директорию XML в PROJECTNAME/app/src/main/res (думаю что сюда)
Кидаем туда файл device_filter.xml из архива (он там лежит по пути /UsbSerial/Objects/res/xml)

Добавляем в Андройд студио в раздел app/manifests/AndroidManifest
между

<activity

</activity>

Вот это

<intent-filter>
<action android:name="android.hardware.usb.action.USB_DEVI CE_ATTACHED" />
</intent-filter>
<meta-data
android:name="android.hardware.usb.action.USB_DEVI CE_ATTACHED"
android:resource="@xml/device_filter" />

А вот что делать дальше я не понимаю.
На этом моменте всё нормально компилируется.

если в MainActivity.java в раздел
@Override
protected void onCreate(Bundle savedInstanceState) {

попробовать добавить что он советует https://github.com/mik3y/usb-serial-for-android

// Find all available drivers from attached devices.
UsbManager manager = (UsbManager) getSystemService(Context.USB_SERVICE);
List<UsbSerialDriver> availableDrivers = UsbSerialProber.getDefaultProber().findAllDrivers( manager);
if (availableDrivers.isEmpty()) {
return;
}

// Open a connection to the first available driver.
UsbSerialDriver driver = availableDrivers.get(0);
UsbDeviceConnection connection = manager.openDevice(driver.getDevice());
if (connection == null) {
// You probably need to call UsbManager.requestPermission(driver.getDevice(), ..)
return;
}

// Read some data! Most have just one port (port 0).
UsbSerialPort port = driver.getPort(0);
port.open(connection);
try {
port.setBaudRate(115200);
byte buffer[] = new byte[16];
int numBytesRead = port.read(buffer, 1000);
Log.d(TAG, "Read " + numBytesRead + " bytes.");
} catch (IOException e) {
// Deal with error.
} finally {
port.close();
}

ТО получим кучу ошибок типо
Error39, 59) error: cannot find symbol method getDefaultProber()

А если что советует этот http://felhr85.net/2014/11/11/usbser...-android-v2-0/ , то получим вставку вида

// This snippet will open the first usb device connected, excluding usb root hubs
UsbManager usbManager = (UsbManager) getSystemService(Context.USB_SERVICE);
UsbDevice device;
UsbDeviceConnection connection;
HashMap<String, UsbDevice> usbDevices = usbManager.getDeviceList();
if(!usbDevices.isEmpty())
{
boolean keep = true;
for(Map.Entry<String, UsbDevice> entry : usbDevices.entrySet())
{
device = entry.getValue()
int deviceVID = device.getVendorId()
int devicePID = device.getProductId()
if(deviceVID != 0x1d6b || (devicePID != 0x0001 || devicePID != 0x0002 || devicePID != 0x0003))
{
// We are supposing here there is only one device connected and it is our serial device
connection = usbManager.openDevice(device);
keep = false;
}else
{
connection = null;
device = null;
}

if(!keep)
break;
}
}

То тоже будут ошибки.

Что делать дальше я не знаю!

Вижу этот Андроид студио первый раз в жизни.
С программированием на яве не знаком совсем.
Так что помогите кто может и хочет.
Вложения
Тип файла: zip USB_Serial_2.4.zip (100.1 Кб, 233 просмотров)
T_r_D вне форума   Ответить с цитированием
Старый 22.11.2015, 14:18   #2
T_r_D
Старший Пользователь
 
Регистрация: 03.07.2015
Регион: 77, 97, 99, 177
Сообщений: 376
T_r_D is a glorious beacon of lightT_r_D is a glorious beacon of lightT_r_D is a glorious beacon of lightT_r_D is a glorious beacon of lightT_r_D is a glorious beacon of light
По умолчанию

Сделал подругому и результат другой.

В libs положил jar
В app/src/main/res/
создал директорию xml и туда положил device_filter.xml
В ведройд студио file>project structure>Dependencies нажал + и выбрал file dependency
Там выбрал UsbSerial.jar

// This snippet will open the first usb device connected, excluding usb root hubs
UsbManager usbManager = (UsbManager) getSystemService(Context.USB_SERVICE);
UsbDevice device;
UsbDeviceConnection connection;
HashMap<String, UsbDevice> usbDevices = usbManager.getDeviceList();
if(!usbDevices.isEmpty())
{
boolean keep = true;
for(Map.Entry<String, UsbDevice> entry : usbDevices.entrySet())
{
device = entry.getValue();
int deviceVID = device.getVendorId();
int devicePID = device.getProductId();
if(deviceVID != 0x1d6b || (devicePID != 0x0001 || devicePID != 0x0002 || devicePID != 0x0003))
{
// We are supposing here there is only one device connected and it is our serial device
connection = usbManager.openDevice(device);
keep = false;
}else
{
connection = null;
device = null;
}

if(!keep)
break;
}
}

запихал в mainActivity.java

А целиком так

package com.oho.can2;

import android.content.Context;
import android.hardware.usb.UsbDevice;
import android.hardware.usb.UsbDeviceConnection;
import android.hardware.usb.UsbManager;
import android.os.Bundle;
import android.support.design.widget.FloatingActionButton ;
import android.support.design.widget.Snackbar;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.View;
import android.view.Menu;
import android.view.MenuItem;

import java.util.HashMap;
import java.util.Map;

public class MainActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);

FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
.setAction("Action", null).show();
}
});


// This snippet will open the first usb device connected, excluding usb root hubs
UsbManager usbManager = (UsbManager) getSystemService(Context.USB_SERVICE);
UsbDevice device;
UsbDeviceConnection connection;
HashMap<String, UsbDevice> usbDevices = usbManager.getDeviceList();
if(!usbDevices.isEmpty())
{
boolean keep = true;
for(Map.Entry<String, UsbDevice> entry : usbDevices.entrySet())
{
device = entry.getValue();
int deviceVID = device.getVendorId();
int devicePID = device.getProductId();
if(deviceVID != 0x1d6b || (devicePID != 0x0001 || devicePID != 0x0002 || devicePID != 0x0003))
{
// We are supposing here there is only one device connected and it is our serial device
connection = usbManager.openDevice(device);
keep = false;
}else
{
connection = null;
device = null;
}

if(!keep)
break;
}
}


}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.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();

//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
}

return super.onOptionsItemSelected(item);
}
}

Это компилируется нормально

Этот путь правильный?
T_r_D вне форума   Ответить с цитированием
Старый 22.11.2015, 14:36   #3
T_r_D
Старший Пользователь
 
Регистрация: 03.07.2015
Регион: 77, 97, 99, 177
Сообщений: 376
T_r_D is a glorious beacon of lightT_r_D is a glorious beacon of lightT_r_D is a glorious beacon of lightT_r_D is a glorious beacon of lightT_r_D is a glorious beacon of light
По умолчанию

Но зато эмулятор выдаёт крашь. Возможно это делает только эмулятор, а на устройстве всё нормально будет.
Вычитал что в эмуляторе 5xxx нету поддержки USB.
11-22 09:32:10.169 1752-1752/com.oho.can2 E/AndroidRuntime: FATAL EXCEPTION: main
11-22 09:32:10.169 1752-1752/com.oho.can2 E/AndroidRuntime: Process: com.oho.can2, PID: 1752
11-22 09:32:10.169 1752-1752/com.oho.can2 E/AndroidRuntime: java.lang.RuntimeException: Unable to start activity ComponentInfo{com.oho.can2/com.oho.can2.MainActivity}: java.lang.NullPointerException: Attempt to invoke interface method 'void android.hardware.usb.IUsbManager.getDeviceList(and roid.os.Bundle)' on a null object reference
11-22 09:32:10.169 1752-1752/com.oho.can2 E/AndroidRuntime: at android.app.ActivityThread.performLaunchActivity(A ctivityThread.java:2325)
11-22 09:32:10.169 1752-1752/com.oho.can2 E/AndroidRuntime: at android.app.ActivityThread.handleLaunchActivity(Ac tivityThread.java:2390)
11-22 09:32:10.169 1752-1752/com.oho.can2 E/AndroidRuntime: at android.app.ActivityThread.access$800(ActivityThre ad.java:151)
11-22 09:32:10.169 1752-1752/com.oho.can2 E/AndroidRuntime: at android.app.ActivityThread$H.handleMessage(Activit yThread.java:1303)
11-22 09:32:10.169 1752-1752/com.oho.can2 E/AndroidRuntime: at android.os.Handler.dispatchMessage(Handler.java:10 2)
11-22 09:32:10.169 1752-1752/com.oho.can2 E/AndroidRuntime: at android.os.Looper.loop(Looper.java:135)
11-22 09:32:10.169 1752-1752/com.oho.can2 E/AndroidRuntime: at android.app.ActivityThread.main(ActivityThread.jav a:5257)
11-22 09:32:10.169 1752-1752/com.oho.can2 E/AndroidRuntime: at java.lang.reflect.Method.invoke(Native Method)
11-22 09:32:10.169 1752-1752/com.oho.can2 E/AndroidRuntime: at java.lang.reflect.Method.invoke(Method.java:372)
11-22 09:32:10.169 1752-1752/com.oho.can2 E/AndroidRuntime: at com.android.internal.os.ZygoteInit$MethodAndArgsCa ller.run(ZygoteInit.java:903)
11-22 09:32:10.169 1752-1752/com.oho.can2 E/AndroidRuntime: at com.android.internal.os.ZygoteInit.main(ZygoteInit .java:698)
11-22 09:32:10.169 1752-1752/com.oho.can2 E/AndroidRuntime: Caused by: java.lang.NullPointerException: Attempt to invoke interface method 'void android.hardware.usb.IUsbManager.getDeviceList(and roid.os.Bundle)' on a null object reference
11-22 09:32:10.169 1752-1752/com.oho.can2 E/AndroidRuntime: at android.hardware.usb.UsbManager.getDeviceList(UsbM anager.java:243)
11-22 09:32:10.169 1752-1752/com.oho.can2 E/AndroidRuntime: at com.oho.can2.MainActivity.onCreate(MainActivity.ja va:42)
11-22 09:32:10.169 1752-1752/com.oho.can2 E/AndroidRuntime: at android.app.Activity.performCreate(Activity.java:5 990)
11-22 09:32:10.169 1752-1752/com.oho.can2 E/AndroidRuntime: at android.app.Instrumentation.callActivityOnCreate(I nstrumentation.java:1106)
11-22 09:32:10.169 1752-1752/com.oho.can2 E/AndroidRuntime: at android.app.ActivityThread.performLaunchActivity(A ctivityThread.java:2278)
11-22 09:32:10.169 1752-1752/com.oho.can2 E/AndroidRuntime: at android.app.ActivityThread.handleLaunchActivity(Ac tivityThread.java:2390)*
11-22 09:32:10.169 1752-1752/com.oho.can2 E/AndroidRuntime: at android.app.ActivityThread.access$800(ActivityThre ad.java:151)*
11-22 09:32:10.169 1752-1752/com.oho.can2 E/AndroidRuntime: at android.app.ActivityThread$H.handleMessage(Activit yThread.java:1303)*
11-22 09:32:10.169 1752-1752/com.oho.can2 E/AndroidRuntime: at android.os.Handler.dispatchMessage(Handler.java:10 2)*
11-22 09:32:10.169 1752-1752/com.oho.can2 E/AndroidRuntime: at android.os.Looper.loop(Looper.java:135)*
11-22 09:32:10.169 1752-1752/com.oho.can2 E/AndroidRuntime: at android.app.ActivityThread.main(ActivityThread.jav a:5257)*
11-22 09:32:10.169 1752-1752/com.oho.can2 E/AndroidRuntime: at java.lang.reflect.Method.invoke(Native Method)*
11-22 09:32:10.169 1752-1752/com.oho.can2 E/AndroidRuntime: at java.lang.reflect.Method.invoke(Method.java:372)*
11-22 09:32:10.169 1752-1752/com.oho.can2 E/AndroidRuntime: at com.android.internal.os.ZygoteInit$MethodAndArgsCa ller.run(ZygoteInit.java:903)*
11-22 09:32:10.169 1752-1752/com.oho.can2 E/AndroidRuntime: at com.android.internal.os.ZygoteInit.main(ZygoteInit .java:698)*

Последний раз редактировалось T_r_D; 22.11.2015 в 20:07.
T_r_D вне форума   Ответить с цитированием
Старый 22.11.2015, 20:27   #4
T_r_D
Старший Пользователь
 
Регистрация: 03.07.2015
Регион: 77, 97, 99, 177
Сообщений: 376
T_r_D is a glorious beacon of lightT_r_D is a glorious beacon of lightT_r_D is a glorious beacon of lightT_r_D is a glorious beacon of lightT_r_D is a glorious beacon of light
По умолчанию

Куча примеров и если я правильно понимаю их отличия, то так, а если нет, то поправьте меня!

Этот https://github.com/mik3y/usb-serial-for-android

<activity
android:name="..."
...>
<intent-filter>
<action android:name="android.hardware.usb.action.USB_DEVI CE_ATTACHED" />
</intent-filter>
<meta-data
android:name="android.hardware.usb.action.USB_DEVI CE_ATTACHED"
android:resource="@xml/device_filter" />
</activity>
Но он прописывает устройства в
2. Copy device_filter.xml to your project's res/xml/ directory.




Этот http://felhr85.net/2014/11/11/usbser...-android-v2-0/
Ищет устройства в коде без использования device_filter.xml
// This snippet will open the first usb device connected, excluding usb root hubs
UsbManager usbManager = (UsbManager) getSystemService(Context.USB_SERVICE);
UsbDevice device;
UsbDeviceConnection connection;
HashMap<String, UsbDevice> usbDevices = usbManager.getDeviceList();
if(!usbDevices.isEmpty())
{
boolean keep = true;
for(Map.Entry<String, UsbDevice> entry : usbDevices.entrySet())
{
device = entry.getValue()
int deviceVID = device.getVendorId()
int devicePID = device.getProductId()
if(deviceVID != 0x1d6b || (devicePID != 0x0001 || devicePID != 0x0002 || devicePID != 0x0003))
{
// We are supposing here there is only one device connected and it is our serial device
connection = usbManager.openDevice(device);
keep = false;
}else
{
connection = null;
device = null;
}

if(!keep)
break;
}
}

Тут https://github.com/felHR85/UsbSerial/tree/vitact_branch
не фига не ищет, а просто кормит подключённому любому USB драйвер CP2102.

UsbDevice device;
UsbDeviceConnection usbConnection;
...
CP2102SerialDevice cp2102 = new CP2102SerialDevice(device, usbConnection);
//UsbSerialDevice bled112 = new BLED112SerialDevice(device, usbConnection);
// Factory method, auto detect current device connected, return null if is not supported
// UsbSerialDevice serial = UsbSerialDevice.createUsbSerialDevice(device, usbConnection);

тут https://github.com/felHR85/UsbSerial/tree/master
незнаю что он делает!
Мои рассуждения правильны или нет?
T_r_D вне форума   Ответить с цитированием
Старый 26.11.2015, 23:38   #5
T_r_D
Старший Пользователь
 
Регистрация: 03.07.2015
Регион: 77, 97, 99, 177
Сообщений: 376
T_r_D is a glorious beacon of lightT_r_D is a glorious beacon of lightT_r_D is a glorious beacon of lightT_r_D is a glorious beacon of lightT_r_D is a glorious beacon of light
По умолчанию

Короче понятно- тут программистов андройда нет, вопросы в пустоту
T_r_D вне форума   Ответить с цитированием
Старый 27.11.2015, 00:12   #6
Rage2
Banned
 
Регистрация: 06.11.2009
Возраст: 33
Город: Nizhniy Novgorod
Регион: 52
Машина: Ford Focus III
Сообщений: 1,777
Rage2 has a brilliant futureRage2 has a brilliant futureRage2 has a brilliant futureRage2 has a brilliant futureRage2 has a brilliant futureRage2 has a brilliant futureRage2 has a brilliant futureRage2 has a brilliant futureRage2 has a brilliant futureRage2 has a brilliant futureRage2 has a brilliant future
По умолчанию

Да нет, пишите...интересно почитать..))
Rage2 вне форума   Ответить с цитированием
Старый 06.12.2015, 16:11   #7
T_r_D
Старший Пользователь
 
Регистрация: 03.07.2015
Регион: 77, 97, 99, 177
Сообщений: 376
T_r_D is a glorious beacon of lightT_r_D is a glorious beacon of lightT_r_D is a glorious beacon of lightT_r_D is a glorious beacon of lightT_r_D is a glorious beacon of light
По умолчанию

Ну раз нам ни кто не помог, помогу Вам!
Итак, нам нужно отсюда взять проект

http://www.allaboutcircuits.com/proj...rough-android/
В нём лежит по пути app/libs файл usbserial.jar
в своём проекте нужно положить его туда же
далее
Свой шрифт
//app/src/main
создать папку
assets
в неё кладём шрифт lcd.ttf
Ну это чтоб красиво было.

манифест
PHP код:
<?xml version="1.0" encoding="UTF-8"?>
<manifest package="com.oho.myapplication" 
xmlns:android="http://schemas.android.com/apk/res/android">
<application android:theme="@style/AppTheme" 
android:supportsRtl="true" 
android:label="@string/app_name" 
android:icon="@mipmap/ic_launcher" 
android:allowBackup="true">
<activity android:theme="@style/AppTheme.NoActionBar" 
android:label="@string/app_name" 
android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<action android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
<meta-data android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED" 
android:resource="@xml/device_filter"/>
</activity>
</application>
</manifest>
в app/src/main/res создаём папку xml
там файл device_filter.xml
с содержанием
PHP код:
<?xml version="1.0" encoding="UTF-8"?>
-<resources>
<!-- 0x0403 / 0x6001: FTDI FT232R UART -->
<usb-device product-id="24577" vendor-id="1027"/>
<!-- 0x2341 / Arduino -->
<usb-device vendor-id="9025"/>
<!-- 0x16C0 / 0x0483: Teensyduino -->
<usb-device product-id="1155" vendor-id="5824"/></resources>
__________________________________________________ ___________________________
build.gradle (module:app)
PHP код:
apply plugin'com.android.application'

android {
    
compileSdkVersion 23
    buildToolsVersion 
"23.0.2"

    
defaultConfig {
        
applicationId "com.oho.myapplication"
        
minSdkVersion 16  //ИЗМЕНИТЬ НА 16!
        
targetSdkVersion 23
        versionCode 1
        versionName 
"1.0"
    
}
    
buildTypes {
        
release {
            
minifyEnabled false
            proguardFiles getDefaultProguardFile
('proguard-android.txt'), 'proguard-rules.pro'
        
}
    }
}

dependencies {
    
compile fileTree(include: ['*.jar'], dir'libs')
    
testCompile 'junit:junit:4.12'
    
compile 'com.android.support:appcompat-v7:23.1.1'
    
compile 'com.android.support:design:23.1.1'
    
compile files('libs/usbserial3.2.jar')

__________________________________________________ ____________________________________
MainActivity.java

в Import
PHP код:
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;

import android.hardware.usb.UsbDevice;
import android.hardware.usb.UsbDeviceConnection;
import android.hardware.usb.UsbManager;

import com.felhr.usbserial.UsbSerialDevice;
import com.felhr.usbserial.UsbSerialInterface;

import java.io.UnsupportedEncodingException;
import java.util.HashMap;
import java.util.Map
В
public class MainActivity extends AppCompatActivity {
PHP код:
    String ACTION_USB_PERMISSION "com.hariharan.arduinousb.USB_PERMISSION";
    
UsbManager usbManager;
    
UsbDevice device;
    
UsbSerialDevice serialPort;
    
UsbDeviceConnection connection;

    
Button sendButtonclearButtonstopButton;

    
TextView textView;
    
EditText editText;

    
UsbSerialInterface.UsbReadCallback mCallback = new UsbSerialInterface.UsbReadCallback() { //Defining a Callback which triggers whenever data is read.
        
@Override
        
public void onReceivedData(byte[] arg0) {
            
String data null;
            try {
                
data = new String(arg0"UTF-8");
                
data.concat("/n");
                
tvAppend(textViewdata);
            } catch (
UnsupportedEncodingException e) {
                
e.printStackTrace();
            }


        }
    };

    private final 
BroadcastReceiver broadcastReceiver = new BroadcastReceiver() { //Broadcast Receiver to automatically start and stop the Serial connection.
        
@Override
        
public void onReceive(Context contextIntent intent) {
            if (
intent.getAction().equals(ACTION_USB_PERMISSION)) {
                
boolean granted intent.getExtras().getBoolean(UsbManager.EXTRA_PERMISSION_GRANTED);
                if (
granted) {
                    
connection usbManager.openDevice(device);
                    
serialPort UsbSerialDevice.createUsbSerialDevice(deviceconnection);
                    if (
serialPort != null) {
                        if (
serialPort.open()) { //Set Serial Connection Parameters.
                            
serialPort.setBaudRate(9600);
                            
serialPort.setDataBits(UsbSerialInterface.DATA_BITS_8);
                            
serialPort.setStopBits(UsbSerialInterface.STOP_BITS_1);
                            
serialPort.setParity(UsbSerialInterface.PARITY_NONE);
                            
serialPort.setFlowControl(UsbSerialInterface.FLOW_CONTROL_OFF);
                            
serialPort.read(mCallback);
                            
tvAppend(textView,"Serial Connection Opened!\n");

                        } else {
                            
Log.d("SERIAL""PORT NOT OPEN");
                        }
                    } else {
                        
Log.d("SERIAL""PORT IS NULL");
                    }
                } else {
                    
Log.d("SERIAL""PERM NOT GRANTED");
                }
            } else if (
intent.getAction().equals(UsbManager.ACTION_USB_DEVICE_ATTACHED)) {
                
Start();
            } else if (
intent.getAction().equals(UsbManager.ACTION_USB_DEVICE_DETACHED)) {
                
Stop();

            }
        }

        ;
    };

    public 
void Start() {
        
HashMap<StringUsbDeviceusbDevices usbManager.getDeviceList();
        if (!
usbDevices.isEmpty()) {
            
boolean keep true;
            for (
Map.Entry<StringUsbDeviceentry usbDevices.entrySet()) {
                
device entry.getValue();
                
int deviceVID device.getVendorId();
                if (
deviceVID == 0x2341 || deviceVID == 0x0403 || deviceVID == 0x1A86)//Arduino Vendor ID
                
{
                    
PendingIntent pi PendingIntent.getBroadcast(this0, new Intent(ACTION_USB_PERMISSION), 0);
                    
usbManager.requestPermission(devicepi);
                    
keep false;
                } else {
                    
connection null;
                    
device null;
                }

                if (!
keep)
                    break;
            }
        }
    }

    public 
void Stop() {
        
serialPort.close();
        
tvAppend(textView,"\nSerial Connection Closed! \n");        
    }

    public 
void onClickSend(View view) {
        
String string editText.getText().toString();
        
serialPort.write(string.getBytes());
        
tvAppend(textView"\nData Sent : " string "\n");

    }

    public 
void onClickStop(View view) {
        
Stop();

    }

    public 
void onClickClear(View view) {
        
textView.setText(" ");
    }

    private 
void tvAppend(TextView tvCharSequence text) {
        final 
TextView ftv tv;
        final 
CharSequence ftext text;

        
runOnUiThread(new Runnable() {
            @
Override
            
public void run() {
                
ftv.append(ftext);
            }
        });
    } 
В OnCreate
PHP код:
        sendButton = (ButtonfindViewById(R.id.buttonSend);
        
clearButton = (ButtonfindViewById(R.id.buttonClear);
        
stopButton = (ButtonfindViewById(R.id.buttonStop);
        
textView = (TextViewfindViewById(R.id.textView);
        
editText = (EditTextfindViewById(R.id.editText);
        
Typeface face Typeface.createFromAsset(getAssets(), "lcd.ttf");
        
textView.setTypeface(face);


        
usbManager = (UsbManagergetSystemService(this.USB_SERVICE);
        
IntentFilter filter = new IntentFilter();
        
filter.addAction(ACTION_USB_PERMISSION);
        
filter.addAction(UsbManager.ACTION_USB_DEVICE_ATTACHED);
        
filter.addAction(UsbManager.ACTION_USB_DEVICE_DETACHED);
        
registerReceiver(broadcastReceiverfilter);

        
Start(); 

Последний раз редактировалось T_r_D; 23.12.2015 в 02:55.
T_r_D вне форума   Ответить с цитированием
Старый 06.12.2015, 16:14   #8
T_r_D
Старший Пользователь
 
Регистрация: 03.07.2015
Регион: 77, 97, 99, 177
Сообщений: 376
T_r_D is a glorious beacon of lightT_r_D is a glorious beacon of lightT_r_D is a glorious beacon of lightT_r_D is a glorious beacon of lightT_r_D is a glorious beacon of light
По умолчанию

возможно придётся указать путь к библиотеке.
file>Project Structure>app
Вкладка dependencie
Там "+" и File Depedency.

в content.main.xml

PHP код:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent"
    android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:paddingBottom="@dimen/activity_vertical_margin"
    app:layout_behavior="@string/appbar_scrolling_view_behavior"
    tools:showIn="@layout/activity_main" tools:context=".MainActivity">


    <Button
        style="?android:attr/buttonStyleSmall"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="    Send    "
        android:id="@+id/buttonSend"
        android:onClick="onClickSend" />

    <Button
        style="?android:attr/buttonStyleSmall"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="    Stop    "
        android:id="@+id/buttonStop"
        android:layout_alignTop="@+id/buttonSend"
        android:layout_toEndOf="@+id/buttonSend"
        android:onClick="onClickStop" />

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Clear"
        android:id="@+id/buttonClear"
        android:layout_alignTop="@+id/buttonStop"
        android:layout_toEndOf="@+id/buttonStop"
        android:onClick="onClickClear" />

    <EditText
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/editText"
        android:layout_alignParentBottom="true"
        android:layout_alignParentStart="true"
        android:layout_marginBottom="40dp"
        android:layout_alignRight="@+id/textView"
        android:layout_alignEnd="@+id/textView"
        android:text="To Send Data" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/textView"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:layout_above="@+id/editText"
        android:layout_below="@+id/buttonSend"
        android:layout_alignParentRight="true"
        android:layout_alignParentEnd="true" />
</RelativeLayout>
T_r_D вне форума   Ответить с цитированием
Старый 06.12.2015, 17:00   #9
vladj
Гуру
 
Аватар для vladj
 
Регистрация: 03.05.2011
Возраст: 68
Город: Верещагино
Регион: 59
Машина: Toyota-Echo
Сообщений: 1,989
vladj has a reputation beyond reputevladj has a reputation beyond reputevladj has a reputation beyond reputevladj has a reputation beyond reputevladj has a reputation beyond reputevladj has a reputation beyond reputevladj has a reputation beyond reputevladj has a reputation beyond reputevladj has a reputation beyond reputevladj has a reputation beyond repute
По умолчанию

Имхо, если вставляешь длинные портянки с кодом,
то решётку жми (левей она), а не PHP.
__________________
DN2800MT, DDR3-4Gb, SSD -30 Gb, Lilliput FA1000 - по HDMI, Win-8 .
vladj вне форума   Ответить с цитированием
Старый 06.12.2015, 19:25   #10
T_r_D
Старший Пользователь
 
Регистрация: 03.07.2015
Регион: 77, 97, 99, 177
Сообщений: 376
T_r_D is a glorious beacon of lightT_r_D is a glorious beacon of lightT_r_D is a glorious beacon of lightT_r_D is a glorious beacon of lightT_r_D is a glorious beacon of light
По умолчанию

Наткнулся на очередные грабли
Пишу вот так
PHP код:
        String str "01|010|2|3|";
        
String[] arr str.split("[|]+");

        for (
int i 0arr.lengthi++) {
            
textView.setText(arr[i]);
        } 
Но в textView ни чего вообще не выводится, хотя должно было вывестись
0101023
Почему?

Опять сам себе отвечаю.
Потому что с каждой новой посылкой textView очищается.
Поэтому нужно так
PHP код:
        String str "01|010|2|3";
        
String[] arr str.split("[|]");
        
textView.setText(arr[0] + arr[1] + arr[2] +arr[3]); 
За одно проверил что действительно получаются 4 объекта в массиве.

Теперь проверяем первое значение, что будет у нас идентификатором сообщения и делаем после этого что-то (сейчас выводим в TextView)
PHP код:
        String str "01|02|03|04|05|06|07|08";
        
String[] arr str.split("[|]");

        if (
arr[0].equals("01")) {
            
textView.setText(arr[1] + arr[2] + arr[3] + arr[4] + arr[5] + arr[6] + arr[7]);
        } 
Теперь вопрос далее.
Как конвертировать String в Float и Int?
Некоторые значения нужно делить, причём чтоб оставались десятые части за запятой.

И опять сам себе отвечаю
PHP код:
        String str "01|2|342|-1|5|06|07|08";
        
String[] arr str.split("[|]");

        if (
arr[0].equals("01")) {

        
Float spdfilpkflpkf;
        
String spdilpklpk;

            
Integer spdi Integer.valueOf(arr[2]);
            
spdi spdi 10;
            
spdf Float.valueOf(spdi);
            
spdf spdf /10;
            
spd Float.toString(spdf);

            if (!
arr[3].equals("-1")) {
                
ilpkf Float.valueOf(arr[3]);
                
ilpkf ilpkf 10;
                
ilpk Float.toString(ilpkf);
            }else {
                
ilpk "---";
            }

            if (!
arr[4].equals("-1")) {
                
lpkf Float.valueOf(arr[4]);
                
lpkf lpkf 10;
                
lpk Float.toString(lpkf);
            }else {
                
lpk "---";
            }



            
textView.setText("RPM:       " arr[1] + "\n" +
                             
"Speed:     " spd "\n" +
                             
"ILPK:       " ilpk "\n" +
                             
"LPK:       " lpk "\n" +
                             
"AVG Speed: " arr[5] + "\n" +
                             
"TRIP:      " arr[6] + "\n" +
                             
"Out Temp:  " arr[7]);
        } 

Последний раз редактировалось T_r_D; 07.12.2015 в 00:20.
T_r_D вне форума   Ответить с цитированием
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.



Часовой пояс GMT +4, время: 04:26.


Работает на vBulletin® версия 3.8.4.
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.
Перевод: zCarot
Яндекс.Метрика