Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
H
HTAnticollision
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
马乐
HTAnticollision
Commits
beb1af4a
Commit
beb1af4a
authored
Apr 10, 2023
by
马乐
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
1.增加串口数据repository
parent
db5fb933
Hide whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
266 additions
and
10 deletions
+266
-10
build.gradle
app/build.gradle
+10
-9
SplashActivity.kt
...src/main/java/com/waytous/anticollision/SplashActivity.kt
+3
-0
CustomProbe.kt
...main/java/com/waytous/anticollision/serial/CustomProbe.kt
+30
-0
SerialDeviceInfo.kt
...java/com/waytous/anticollision/serial/SerialDeviceInfo.kt
+10
-0
UsbSerialExt.kt
...ain/java/com/waytous/anticollision/serial/UsbSerialExt.kt
+25
-0
HomeRepository.kt
.../java/com/waytous/anticollision/ui/home/HomeRepository.kt
+77
-0
HomeViewModel.kt
...n/java/com/waytous/anticollision/ui/home/HomeViewModel.kt
+13
-1
drawable_scan_preview.xml
app/src/main/res/drawable-v23/drawable_scan_preview.xml
+32
-0
drawable_loading_progress.xml
app/src/main/res/drawable/drawable_loading_progress.xml
+27
-0
device_filter.xml
app/src/main/res/xml/device_filter.xml
+38
-0
settings.gradle
settings.gradle
+1
-0
No files found.
app/build.gradle
View file @
beb1af4a
...
...
@@ -41,12 +41,12 @@ android {
dependencies
{
implementation
'androidx.core:core-ktx:1.
8
.0'
implementation
'androidx.appcompat:appcompat:1.
5
.1'
implementation
'com.google.android.material:material:1.
7
.0'
implementation
'androidx.core:core-ktx:1.
9
.0'
implementation
'androidx.appcompat:appcompat:1.
6
.1'
implementation
'com.google.android.material:material:1.
8
.0'
implementation
'androidx.constraintlayout:constraintlayout:2.1.4'
implementation
'androidx.lifecycle:lifecycle-livedata-ktx:2.
5
.1'
implementation
'androidx.lifecycle:lifecycle-viewmodel-ktx:2.
5
.1'
implementation
'androidx.lifecycle:lifecycle-livedata-ktx:2.
6
.1'
implementation
'androidx.lifecycle:lifecycle-viewmodel-ktx:2.
6
.1'
implementation
'androidx.navigation:navigation-fragment-ktx:2.5.3'
implementation
'androidx.navigation:navigation-ui-ktx:2.5.3'
implementation
'com.squareup.okhttp3:okhttp:4.10.0'
...
...
@@ -55,11 +55,11 @@ dependencies {
implementation
'io.netty:netty-buffer:4.1.87.Final'
implementation
'io.github.toggery:jt808-codec:2.0.3'
implementation
'com.blankj:utilcodex:1.31.1'
implementation
'com.blankj:utilcodex:1.31.1'
implementation
'org.jetbrains.kotlin:kotlin-reflect:1.7.22'
implementation
'com.geyifeng.immersionbar:immersionbar:3.2.2'
implementation
'androidx.work:work-runtime-ktx:2.7.1'
implementation
'androidx.work:work-runtime-ktx:2.8.1'
implementation
'com.github.mik3y:usb-serial-for-android:3.5.1'
testImplementation
'junit:junit:4.13.2'
androidTestImplementation
'androidx.test.ext:junit:1.1.
4
'
androidTestImplementation
'androidx.test.espresso:espresso-core:3.5.
0
'
androidTestImplementation
'androidx.test.ext:junit:1.1.
5
'
androidTestImplementation
'androidx.test.espresso:espresso-core:3.5.
1
'
}
\ No newline at end of file
app/src/main/java/com/waytous/anticollision/SplashActivity.kt
View file @
beb1af4a
...
...
@@ -18,10 +18,12 @@ class SplashActivity : AppCompatActivity() {
//设置隐藏虚拟按键
BarUtils
.
setNavBarVisibility
(
this
,
false
);
binding
=
ActivitySplashBinding
.
inflate
(
layoutInflater
)
setContentView
(
binding
.
root
)
"${getString(R.string.text_progress, 57)}%"
.
also
{
binding
.
textProgress
.
text
=
it
}
binding
.
loadingProgressBar
.
progress
=
57
binding
.
loadingProgressBar
.
show
()
}
}
\ No newline at end of file
app/src/main/java/com/waytous/anticollision/serial/CustomProbe.kt
0 → 100644
View file @
beb1af4a
package
com.waytous.anticollision.serial
import
com.hoho.android.usbserial.driver.FtdiSerialDriver
import
com.hoho.android.usbserial.driver.ProbeTable
import
com.hoho.android.usbserial.driver.UsbSerialProber
class
CustomProbe
{
companion
object
{
fun
getCustomProbe
():
UsbSerialProber
{
val
customTable
=
ProbeTable
()
customTable
.
addProduct
(
0
x1234
,
0
x0001
,
FtdiSerialDriver
::
class
.
java
)
// e.g. device with custom VID+PID
customTable
.
addProduct
(
0
x1234
,
0
x0002
,
FtdiSerialDriver
::
class
.
java
)
// e.g. device with custom VID+PID
return
UsbSerialProber
(
customTable
)
}
}
}
\ No newline at end of file
app/src/main/java/com/waytous/anticollision/serial/SerialDeviceInfo.kt
0 → 100644
View file @
beb1af4a
package
com.waytous.anticollision.serial
/**
* USB串口设备信息
* @param deviceId 设备id
* @param portNum usb port id
* @param baudRate 波特率
* */
data class
SerialDeviceInfo
(
val
deviceId
:
Int
,
val
portNum
:
Int
,
val
baudRate
:
Int
)
\ No newline at end of file
app/src/main/java/com/waytous/anticollision/serial/UsbSerialExt.kt
0 → 100644
View file @
beb1af4a
package
com.waytous.anticollision.serial
import
android.hardware.usb.UsbManager
import
com.hoho.android.usbserial.driver.UsbSerialDriver
import
com.hoho.android.usbserial.driver.UsbSerialProber
fun
UsbManager
.
refresh
():
List
<
SerialDeviceInfo
>{
val
usbDefaultProbe
=
UsbSerialProber
.
getDefaultProber
()
val
usbCustomProbe
:
UsbSerialProber
=
CustomProbe
.
getCustomProbe
()
val
deviceInfos
=
mutableListOf
<
SerialDeviceInfo
>()
for
(
device
in
deviceList
.
values
)
{
var
driver
:
UsbSerialDriver
?
=
usbDefaultProbe
.
probeDevice
(
device
)
if
(
driver
==
null
)
{
driver
=
usbCustomProbe
.
probeDevice
(
device
)
}
// if (driver != null) {
// deviceInfos.add(SerialDeviceInfo(device.deviceId,device.po))
// for (port in driver.ports.indices) listItems.add(ListItem(device, port, driver))
// } else {
// listItems.add(ListItem(device, 0, null))
// }
}
}
\ No newline at end of file
app/src/main/java/com/waytous/anticollision/ui/home/HomeRepository.kt
0 → 100644
View file @
beb1af4a
package
com.waytous.anticollision.ui.home
import
android.hardware.usb.UsbDevice
import
android.hardware.usb.UsbManager
import
com.hoho.android.usbserial.driver.UsbSerialPort
import
com.hoho.android.usbserial.driver.UsbSerialProber
import
com.hoho.android.usbserial.util.SerialInputOutputManager
import
com.waytous.anticollision.serial.CustomProbe
class
HomeRepository
(
private
val
usbManager
:
UsbManager
,
val
withIoManager
:
Boolean
):
SerialInputOutputManager
.
Listener
{
private
lateinit
var
usbIoManager
:
SerialInputOutputManager
private
var
usbPermission
:
UsbPermission
=
UsbPermission
.
Unknown
private
var
connected
:
Boolean
=
false
enum
class
UsbPermission
{
Unknown
,
Requested
,
Granted
,
Denied
}
fun
connect
(
deviceId
:
Int
,
portNum
:
Int
,
baudRate
:
Int
,
requestUsbPermissions
:()->
Unit
){
var
device
:
UsbDevice
?=
usbManager
.
deviceList
.
values
.
find
{
it
.
deviceId
==
deviceId
}
?:
return
var
driver
=
UsbSerialProber
.
getDefaultProber
().
probeDevice
(
device
)
if
(
driver
==
null
)
{
driver
=
CustomProbe
.
getCustomProbe
().
probeDevice
(
device
)
}
if
(
driver
==
null
)
{
return
}
if
(
driver
.
ports
.
size
<
portNum
)
{
return
}
val
usbSerialPort
=
driver
.
ports
[
portNum
]
val
usbConnection
=
usbManager
.
openDevice
(
driver
.
device
)
if
(
usbConnection
==
null
&&
usbPermission
==
UsbPermission
.
Unknown
&&
!
usbManager
.
hasPermission
(
driver
.
device
)
)
{
usbPermission
=
UsbPermission
.
Requested
requestUsbPermissions
()
return
}
try
{
usbSerialPort
.
open
(
usbConnection
)
usbSerialPort
.
setParameters
(
baudRate
,
8
,
1
,
UsbSerialPort
.
PARITY_NONE
)
if
(
withIoManager
)
{
usbIoManager
=
SerialInputOutputManager
(
usbSerialPort
,
this
)
usbIoManager
.
start
()
}
connected
=
true
}
catch
(
e
:
Exception
)
{
disconnect
()
}
}
private
fun
disconnect
()
{
}
override
fun
onNewData
(
data
:
ByteArray
?)
{
TODO
(
"Not yet implemented"
)
}
override
fun
onRunError
(
e
:
java
.
lang
.
Exception
?)
{
TODO
(
"Not yet implemented"
)
}
}
\ No newline at end of file
app/src/main/java/com/waytous/anticollision/ui/home/HomeViewModel.kt
View file @
beb1af4a
...
...
@@ -3,11 +3,22 @@ package com.waytous.anticollision.ui.home
import
androidx.lifecycle.LiveData
import
androidx.lifecycle.MutableLiveData
import
androidx.lifecycle.ViewModel
import
com.hoho.android.usbserial.util.SerialInputOutputManager
import
java.lang.Exception
class
HomeViewModel
:
ViewModel
()
{
class
HomeViewModel
:
ViewModel
()
,
SerialInputOutputManager
.
Listener
{
private
val
_text
=
MutableLiveData
<
String
>().
apply
{
value
=
"This is home Fragment"
}
val
text
:
LiveData
<
String
>
=
_text
override
fun
onNewData
(
data
:
ByteArray
?)
{
}
override
fun
onRunError
(
e
:
Exception
?)
{
}
}
\ No newline at end of file
app/src/main/res/drawable-v23/drawable_scan_preview.xml
0 → 100644
View file @
beb1af4a
<?xml version="1.0" encoding="utf-8"?>
<layer-list
xmlns:android=
"http://schemas.android.com/apk/res/android"
>
<item
android:width=
"103dp"
android:height=
"103dp"
>
<shape
android:shape=
"rectangle"
>
<solid
android:color=
"#ffffffff"
/>
<corners
android:topLeftRadius=
"0dp"
android:topRightRadius=
"0dp"
android:bottomLeftRadius=
"0dp"
android:bottomRightRadius=
"0dp"
/>
</shape>
</item>
<item
android:width=
"61dp"
android:height=
"66dp"
android:top=
"17dp"
android:left=
"19.5dp"
>
<shape
android:shape=
"rectangle"
>
<solid
android:color=
"#ffd8d8d8"
/>
<corners
android:topLeftRadius=
"0dp"
android:topRightRadius=
"0dp"
android:bottomLeftRadius=
"0dp"
android:bottomRightRadius=
"0dp"
/>
</shape>
</item>
<item
android:width=
"33dp"
android:height=
"34dp"
android:left=
"33.dp"
android:top=
"1.5dp"
>
<shape
android:shape=
"rectangle"
>
<solid
android:color=
"#ffd8d8d8"
/>
<corners
android:topLeftRadius=
"0dp"
android:topRightRadius=
"0dp"
android:bottomLeftRadius=
"0dp"
android:bottomRightRadius=
"0dp"
/>
</shape>
</item>
<item
android:width=
"50dp"
android:height=
"42dp"
android:left=
"1.5dp"
android:top=
"1.5dp"
>
<shape
android:shape=
"rectangle"
>
<solid
android:color=
"#ffff0000"
/>
</shape>
</item>
<item
android:width=
"50dp"
android:height=
"42dp"
android:left=
"51.5dp"
android:top=
"1.5dp"
>
<shape
android:shape=
"rectangle"
>
<solid
android:color=
"#ffffcb00"
/>
</shape>
</item>
</layer-list>
\ No newline at end of file
app/src/main/res/drawable/drawable_loading_progress.xml
0 → 100644
View file @
beb1af4a
<?xml version="1.0" encoding="utf-8"?>
<layer-list
xmlns:android=
"http://schemas.android.com/apk/res/android"
>
<!--3个层的顺序即为显示时的叠加顺序-->
<!--背景色-->
<item
android:id=
"@android:id/background"
>
<shape
android:shape=
"rectangle"
>
<solid
android:color=
"#fff2f2f2"
/>
<corners
android:radius=
"5dp"
/>
<item
android:name=
"android:shadowColor"
>
#17000000
</item>
<item
android:name=
"android:shadowDx"
>
0
</item>
<item
android:name=
"android:shadowDy"
>
1
</item>
</shape>
</item>
<!--一级进度条的颜色,也可以直接替换成图片-->
<item
android:id=
"@android:id/progress"
>
<clip>
<shape
android:shape=
"rectangle"
>
<gradient
android:type=
"linear"
android:useLevel=
"true"
android:startColor=
"#ff008aee"
android:endColor=
"#ff0052d8"
android:angle=
"180"
/>
<corners
android:radius=
"5dp"
/>
<item
android:name=
"android:shadowColor"
>
#4d000000
</item>
<item
android:name=
"android:shadowDx"
>
0
</item>
<item
android:name=
"android:shadowDy"
>
1
</item>
</shape>
</clip>
</item>
</layer-list>
app/src/main/res/xml/device_filter.xml
0 → 100644
View file @
beb1af4a
<?xml version="1.0" encoding="utf-8"?>
<resources>
<!-- 0x0403 / 0x60??: FTDI -->
<usb-device
vendor-id=
"1027"
product-id=
"24577"
/>
<!-- 0x6001: FT232R -->
<usb-device
vendor-id=
"1027"
product-id=
"24592"
/>
<!-- 0x6010: FT2232H -->
<usb-device
vendor-id=
"1027"
product-id=
"24593"
/>
<!-- 0x6011: FT4232H -->
<usb-device
vendor-id=
"1027"
product-id=
"24596"
/>
<!-- 0x6014: FT232H -->
<usb-device
vendor-id=
"1027"
product-id=
"24597"
/>
<!-- 0x6015: FT230X, FT231X, FT234XD -->
<!-- 0x10C4 / 0xEA??: Silabs CP210x -->
<usb-device
vendor-id=
"4292"
product-id=
"60000"
/>
<!-- 0xea60: CP2102 and other CP210x single port devices -->
<usb-device
vendor-id=
"4292"
product-id=
"60016"
/>
<!-- 0xea70: CP2105 -->
<usb-device
vendor-id=
"4292"
product-id=
"60017"
/>
<!-- 0xea71: CP2108 -->
<!-- 0x067B / 0x23?3: Prolific PL2303x -->
<usb-device
vendor-id=
"1659"
product-id=
"8963"
/>
<!-- 0x2303: PL2303HX, HXD, TA, ... -->
<usb-device
vendor-id=
"1659"
product-id=
"9123"
/>
<!-- 0x23a3: PL2303GC -->
<usb-device
vendor-id=
"1659"
product-id=
"9139"
/>
<!-- 0x23b3: PL2303GB -->
<usb-device
vendor-id=
"1659"
product-id=
"9155"
/>
<!-- 0x23c3: PL2303GT -->
<usb-device
vendor-id=
"1659"
product-id=
"9171"
/>
<!-- 0x23d3: PL2303GL -->
<usb-device
vendor-id=
"1659"
product-id=
"9187"
/>
<!-- 0x23e3: PL2303GE -->
<usb-device
vendor-id=
"1659"
product-id=
"9203"
/>
<!-- 0x23f3: PL2303GS -->
<!-- 0x1a86 / 0x?523: Qinheng CH34x -->
<usb-device
vendor-id=
"6790"
product-id=
"21795"
/>
<!-- 0x5523: CH341A -->
<usb-device
vendor-id=
"6790"
product-id=
"29987"
/>
<!-- 0x7523: CH340 -->
<!-- CDC driver -->
<usb-device
vendor-id=
"9025"
/>
<!-- 0x2341 / ......: Arduino -->
<usb-device
vendor-id=
"5824"
product-id=
"1155"
/>
<!-- 0x16C0 / 0x0483: Teensyduino -->
<usb-device
vendor-id=
"1003"
product-id=
"8260"
/>
<!-- 0x03EB / 0x2044: Atmel Lufa -->
<usb-device
vendor-id=
"7855"
product-id=
"4"
/>
<!-- 0x1eaf / 0x0004: Leaflabs Maple -->
<usb-device
vendor-id=
"3368"
product-id=
"516"
/>
<!-- 0x0d28 / 0x0204: ARM mbed -->
<usb-device
vendor-id=
"1155"
product-id=
"22336"
/>
<!-- 0x0483 / 0x5740: ST CDC -->
<usb-device
vendor-id=
"11914"
product-id=
"5"
/>
<!-- 0x2E8A / 0x0005: Raspberry Pi Pico Micropython -->
<usb-device
vendor-id=
"11914"
product-id=
"10"
/>
<!-- 0x2E8A / 0x000A: Raspberry Pi Pico SDK -->
<usb-device
vendor-id=
"6790"
product-id=
"21972"
/>
<!-- 0x1A86 / 0x55D4: Qinheng CH9102F -->
</resources>
settings.gradle
View file @
beb1af4a
...
...
@@ -23,6 +23,7 @@ dependencyResolutionManagement {
password
=
MAPBOX_DOWNLOADS_TOKEN
}
}
maven
{
url
'https://jitpack.io'
}
}
}
rootProject
.
name
=
"HTAnticollision"
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment