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
a2a5b73b
Commit
a2a5b73b
authored
Apr 12, 2023
by
马乐
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
1.串口通信类优化
parent
beb1af4a
Hide whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
84 additions
and
50 deletions
+84
-50
build.gradle
app/build.gradle
+17
-14
AndroidManifest.xml
app/src/main/AndroidManifest.xml
+6
-1
SplashActivity.kt
...src/main/java/com/waytous/anticollision/SplashActivity.kt
+6
-2
CustomProbe.kt
...main/java/com/waytous/anticollision/serial/CustomProbe.kt
+1
-0
SerialDeviceInfo.kt
...java/com/waytous/anticollision/serial/SerialDeviceInfo.kt
+11
-2
UsbSerialExt.kt
...ain/java/com/waytous/anticollision/serial/UsbSerialExt.kt
+11
-7
Session.kt
app/src/main/java/com/waytous/anticollision/tcp/Session.kt
+15
-12
MainActivity.kt
...rc/main/java/com/waytous/anticollision/ui/MainActivity.kt
+2
-0
Extensions.kt
...c/main/java/com/waytous/anticollision/utils/Extensions.kt
+15
-0
ConnectionWork.kt
.../main/java/com/waytous/anticollision/wm/ConnectionWork.kt
+0
-12
No files found.
app/build.gradle
View file @
a2a5b73b
plugins
{
id
'com.android.application'
id
'org.jetbrains.kotlin.android'
// id 'kotlin-kapt'
}
android
{
namespace
'com.waytous.anticollision'
compileSdk
3
2
compileSdk
3
3
defaultConfig
{
applicationId
"com.waytous.anticollision"
minSdk
21
targetSdk
3
2
targetSdk
3
3
versionCode
1
versionName
"1.0"
...
...
@@ -41,25 +42,26 @@ android {
dependencies
{
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.
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
'androidx.core:core-ktx:1.
7
.0'
implementation
'androidx.appcompat:appcompat:1.
4
.1'
implementation
'com.google.android.material:material:1.
5
.0'
implementation
'androidx.constraintlayout:constraintlayout:2.1.
3
'
implementation
'androidx.lifecycle:lifecycle-livedata-ktx:2.
4
.1'
implementation
'androidx.lifecycle:lifecycle-viewmodel-ktx:2.
5.0
'
implementation
'androidx.navigation:navigation-fragment-ktx:2.
4.1
'
implementation
'androidx.navigation:navigation-ui-ktx:2.
4.1
'
implementation
'com.squareup.okhttp3:okhttp:4.10.0'
implementation
'com.mapbox.maps:android:10.11.0'
implementation
'com.mapbox.mapboxsdk:mapbox-sdk-geojson:6.9.0'
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
'org.jetbrains.kotlin:kotlin-reflect:1.7.22'
implementation
'com.blankj:utilcodex:1.31.1'
implementation
'org.jetbrains.kotlin:kotlin-reflect:1.7.20'
implementation
'com.geyifeng.immersionbar:immersionbar:3.2.2'
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.
5
'
androidTestImplementation
'androidx.test.espresso:espresso-core:3.
5.1
'
androidTestImplementation
'androidx.test.ext:junit:1.1.
3
'
androidTestImplementation
'androidx.test.espresso:espresso-core:3.
4.0
'
}
\ No newline at end of file
app/src/main/AndroidManifest.xml
View file @
a2a5b73b
...
...
@@ -4,7 +4,12 @@
<uses-permission
android:name=
"android.permission.INTERNET"
/>
<uses-permission
android:name=
"android.permission.READ_EXTERNAL_STORAGE"
/>
<uses-permission
android:name=
"android.permission.WRITE_EXTERNAL_STORAGE"
/>
<uses-permission
android:name=
"android.permission.WRITE_EXTERNAL_STORAGE"
tools:ignore=
"ScopedStorage"
/>
<!-- 定位权限 -->
<uses-permission
android:name=
"android.permission.ACCESS_FINE_LOCATION"
/>
<uses-permission
android:name=
"android.permission.ACCESS_COARSE_LOCATION"
/>
<application
android:name=
".MyApp"
...
...
app/src/main/java/com/waytous/anticollision/SplashActivity.kt
View file @
a2a5b73b
package
com.waytous.anticollision
import
android.content.Intent
import
android.os.Bundle
import
android.view.View
import
androidx.appcompat.app.AppCompatActivity
import
com.blankj.utilcode.util.BarUtils
import
com.blankj.utilcode.util.ColorUtils
import
com.waytous.anticollision.databinding.ActivitySplashBinding
import
com.waytous.anticollision.ui.MainActivity
class
SplashActivity
:
AppCompatActivity
()
{
...
...
@@ -23,7 +24,9 @@ class SplashActivity : AppCompatActivity() {
"${getString(R.string.text_progress, 57)}%"
.
also
{
binding
.
textProgress
.
text
=
it
}
binding
.
loadingProgressBar
.
progress
=
57
binding
.
loadingProgressBar
.
show
()
binding
.
loadingProgressBar
.
postDelayed
({
startActivity
(
Intent
(
this
,
MainActivity
::
class
.
java
))
},
2000
)
}
}
\ No newline at end of file
app/src/main/java/com/waytous/anticollision/serial/CustomProbe.kt
View file @
a2a5b73b
...
...
@@ -4,6 +4,7 @@ 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
{
...
...
app/src/main/java/com/waytous/anticollision/serial/SerialDeviceInfo.kt
View file @
a2a5b73b
package
com.waytous.anticollision.serial
import
android.hardware.usb.UsbDevice
import
com.hoho.android.usbserial.driver.UsbSerialDriver
/**
* 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
data class
SerialDeviceInfo
(
val
deviceId
:
Int
,
val
portNum
:
Int
,
val
baudRate
:
Int
,
val
device
:
UsbDevice
,
val
driver
:
UsbSerialDriver
?
)
\ No newline at end of file
app/src/main/java/com/waytous/anticollision/serial/UsbSerialExt.kt
View file @
a2a5b73b
...
...
@@ -4,6 +4,8 @@ import android.hardware.usb.UsbManager
import
com.hoho.android.usbserial.driver.UsbSerialDriver
import
com.hoho.android.usbserial.driver.UsbSerialProber
const
val
BAUD_RATE
=
19200
fun
UsbManager
.
refresh
():
List
<
SerialDeviceInfo
>{
val
usbDefaultProbe
=
UsbSerialProber
.
getDefaultProber
()
val
usbCustomProbe
:
UsbSerialProber
=
CustomProbe
.
getCustomProbe
()
...
...
@@ -13,12 +15,13 @@ fun UsbManager.refresh():List<SerialDeviceInfo>{
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))
// }
if
(
driver
!=
null
)
{
driver
.
ports
.
forEach
{
serialPort
->
deviceInfos
.
add
(
SerialDeviceInfo
(
device
.
deviceId
,
serialPort
.
portNumber
,
BAUD_RATE
,
device
,
driver
))
}
}
else
{
deviceInfos
.
add
(
SerialDeviceInfo
(
device
.
deviceId
,
0
,
BAUD_RATE
,
device
,
null
))
}
}
return
deviceInfos
}
\ No newline at end of file
app/src/main/java/com/waytous/anticollision/tcp/Session.kt
View file @
a2a5b73b
...
...
@@ -6,8 +6,12 @@ import com.waytous.anticollision.BuildConfig
import
com.waytous.anticollision.config.DeviceConfig
import
com.waytous.anticollision.config.Settings
import
com.waytous.anticollision.listener.SessionListener
import
com.waytous.anticollision.utils.*
import
io.github.toggery.jt808.codec.*
import
com.waytous.anticollision.utils.ConnectStatus
import
com.waytous.anticollision.utils.Error
import
com.waytous.anticollision.utils.NamedThreadFactory
import
com.waytous.anticollision.utils.SignInStatus
import
io.github.toggery.jt808.codec.Message
import
io.github.toggery.jt808.codec.MessageMetadata
import
io.github.toggery.jt808.messagebody.*
import
io.netty.buffer.ByteBuf
import
io.netty.buffer.UnpooledByteBufAllocator
...
...
@@ -73,7 +77,7 @@ internal class Schedule {
* jt808网络会话管理
* @author male
* */
internal
class
Session
:
ConnectListener
,
SyncMessageListener
<
AbstractToStringJoiner
>
{
class
Session
:
ConnectListener
,
SyncMessageListener
<
AbstractToStringJoiner
>
{
/**
* 消息内容解析器
...
...
@@ -287,7 +291,6 @@ internal class Session : ConnectListener, SyncMessageListener<AbstractToStringJo
* 开始心跳
* */
private
fun
startHeartbeat
()
{
scheduleFutureTask
=
scheduler
.
scheduleAtFixedRate
(
::
sendPing
,
0
,
...
...
@@ -323,15 +326,15 @@ internal class Session : ConnectListener, SyncMessageListener<AbstractToStringJo
* 发送心跳
* */
private
fun
doSendMessage
(
name
:
String
)
=
if
(
buffs
.
isNotEmpty
())
{
val
byteArray
=
ByteArray
(
buffs
[
0
].
readableBytes
())
buffs
[
0
].
readBytes
(
byteArray
)
if
(
BuildConfig
.
DEBUG
)
{
LogUtils
.
d
(
"【$name】:${HexUtil.dump(byteArray)}"
)
}
else
{
LogUtils
.
file
(
"【$name】:${HexUtil.dump(byteArray)}"
)
}
tcpManager
.
send
(
byteArray
)
synchronized
(
buffs
)
{
val
byteArray
=
ByteArray
(
buffs
[
0
].
readableBytes
())
buffs
[
0
].
readBytes
(
byteArray
)
if
(
BuildConfig
.
DEBUG
)
{
LogUtils
.
d
(
"【$name】:${HexUtil.dump(byteArray)}"
)
}
else
{
LogUtils
.
file
(
"【$name】:${HexUtil.dump(byteArray)}"
)
}
tcpManager
.
send
(
byteArray
)
buffs
.
removeAt
(
0
)
}
true
...
...
app/src/main/java/com/waytous/anticollision/ui/MainActivity.kt
View file @
a2a5b73b
...
...
@@ -32,6 +32,8 @@ class MainActivity : AppCompatActivity() {
DeviceConfig
.
HostConfig
.
host
=
"47.100.112.218"
DeviceConfig
.
HostConfig
.
port
=
8808
// DeviceConfig.HostConfig.host = "192.168.9.48"
// DeviceConfig.HostConfig.port = 1022
val
session
=
Session
()
thread
{
session
.
login
()
}
}
...
...
app/src/main/java/com/waytous/anticollision/utils/Extensions.kt
View file @
a2a5b73b
package
com.waytous.anticollision.utils
import
androidx.appcompat.app.AppCompatActivity
import
androidx.core.app.ActivityCompat
/**
* 连接状态
* */
...
...
@@ -29,4 +32,15 @@ enum class Error(val reason:String = "success") {
ServerUnknownError
(
"server unknown error"
),
JT808EncodeError
(
"jt808 codec encode error"
),
JT808DecodeError
(
"jt808 codec decode error"
)
}
fun
AppCompatActivity
.
checkSelfPermissionCompat
(
permission
:
String
)
=
ActivityCompat
.
checkSelfPermission
(
this
,
permission
)
fun
AppCompatActivity
.
shouldShowRequestPermissionRationaleCompat
(
permission
:
String
)
=
ActivityCompat
.
shouldShowRequestPermissionRationale
(
this
,
permission
)
fun
AppCompatActivity
.
requestPermissionsCompat
(
permissionsArray
:
Array
<
String
>,
requestCode
:
Int
)
{
ActivityCompat
.
requestPermissions
(
this
,
permissionsArray
,
requestCode
)
}
\ No newline at end of file
app/src/main/java/com/waytous/anticollision/wm/ConnectionWork.kt
deleted
100644 → 0
View file @
beb1af4a
package
com.waytous.anticollision.wm
import
android.content.Context
import
androidx.work.Worker
import
androidx.work.WorkerParameters
class
ConnectionWork
(
appContext
:
Context
,
workerParams
:
WorkerParameters
):
Worker
(
appContext
,
workerParams
)
{
override
fun
doWork
():
Result
{
return
Result
.
retry
()
}
}
\ No newline at end of file
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