first release done: main commands for communictation works
This commit is contained in:
commit
81157eeaaa
6
.gitignore
vendored
Normal file
6
.gitignore
vendored
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
/target
|
||||||
|
*.csv
|
||||||
|
*.png
|
||||||
|
*.swp
|
||||||
|
*.zip
|
||||||
|
*.log
|
814
Cargo.lock
generated
Normal file
814
Cargo.lock
generated
Normal file
@ -0,0 +1,814 @@
|
|||||||
|
# This file is automatically @generated by Cargo.
|
||||||
|
# It is not intended for manual editing.
|
||||||
|
version = 4
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "aho-corasick"
|
||||||
|
version = "1.1.3"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916"
|
||||||
|
dependencies = [
|
||||||
|
"memchr",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "android-tzdata"
|
||||||
|
version = "0.1.1"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "android_system_properties"
|
||||||
|
version = "0.1.5"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311"
|
||||||
|
dependencies = [
|
||||||
|
"libc",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "autocfg"
|
||||||
|
version = "1.4.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "bitflags"
|
||||||
|
version = "1.3.2"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "bitflags"
|
||||||
|
version = "2.8.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "8f68f53c83ab957f72c32642f3868eec03eb974d1fb82e453128456482613d36"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "bumpalo"
|
||||||
|
version = "3.17.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "1628fb46dfa0b37568d12e5edd512553eccf6a22a78e8bde00bb4aed84d5bdbf"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "cc"
|
||||||
|
version = "1.2.15"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "c736e259eea577f443d5c86c304f9f4ae0295c43f3ba05c21f1d66b5f06001af"
|
||||||
|
dependencies = [
|
||||||
|
"shlex",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "cfg-if"
|
||||||
|
version = "1.0.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "chrono"
|
||||||
|
version = "0.4.40"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "1a7964611d71df112cb1730f2ee67324fcf4d0fc6606acbbe9bfe06df124637c"
|
||||||
|
dependencies = [
|
||||||
|
"android-tzdata",
|
||||||
|
"iana-time-zone",
|
||||||
|
"js-sys",
|
||||||
|
"num-traits",
|
||||||
|
"wasm-bindgen",
|
||||||
|
"windows-link",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "clipboard-win"
|
||||||
|
version = "4.5.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "7191c27c2357d9b7ef96baac1773290d4ca63b24205b82a3fd8a0637afcf0362"
|
||||||
|
dependencies = [
|
||||||
|
"error-code",
|
||||||
|
"str-buf",
|
||||||
|
"winapi",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "core-foundation"
|
||||||
|
version = "0.10.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "b55271e5c8c478ad3f38ad24ef34923091e0548492a266d19b3c0b4d82574c63"
|
||||||
|
dependencies = [
|
||||||
|
"core-foundation-sys",
|
||||||
|
"libc",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "core-foundation-sys"
|
||||||
|
version = "0.8.7"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "dirs-next"
|
||||||
|
version = "2.0.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "b98cf8ebf19c3d1b223e151f99a4f9f0690dca41414773390fc824184ac833e1"
|
||||||
|
dependencies = [
|
||||||
|
"cfg-if",
|
||||||
|
"dirs-sys-next",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "dirs-sys-next"
|
||||||
|
version = "0.1.2"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "4ebda144c4fe02d1f7ea1a7d9641b6fc6b580adcfa024ae48797ecdeb6825b4d"
|
||||||
|
dependencies = [
|
||||||
|
"libc",
|
||||||
|
"redox_users",
|
||||||
|
"winapi",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "endian-type"
|
||||||
|
version = "0.1.2"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "c34f04666d835ff5d62e058c3995147c06f42fe86ff053337632bca83e42702d"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "errno"
|
||||||
|
version = "0.3.10"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "33d852cb9b869c2a9b3df2f71a3074817f01e1844f839a144f5fcef059a4eb5d"
|
||||||
|
dependencies = [
|
||||||
|
"libc",
|
||||||
|
"windows-sys 0.59.0",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "error-code"
|
||||||
|
version = "2.3.1"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "64f18991e7bf11e7ffee451b5318b5c1a73c52d0d0ada6e5a3017c8c1ced6a21"
|
||||||
|
dependencies = [
|
||||||
|
"libc",
|
||||||
|
"str-buf",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "fd-lock"
|
||||||
|
version = "3.0.13"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "ef033ed5e9bad94e55838ca0ca906db0e043f517adda0c8b79c7a8c66c93c1b5"
|
||||||
|
dependencies = [
|
||||||
|
"cfg-if",
|
||||||
|
"rustix",
|
||||||
|
"windows-sys 0.48.0",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "getrandom"
|
||||||
|
version = "0.2.15"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7"
|
||||||
|
dependencies = [
|
||||||
|
"cfg-if",
|
||||||
|
"libc",
|
||||||
|
"wasi",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "iana-time-zone"
|
||||||
|
version = "0.1.61"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "235e081f3925a06703c2d0117ea8b91f042756fd6e7a6e5d901e8ca1a996b220"
|
||||||
|
dependencies = [
|
||||||
|
"android_system_properties",
|
||||||
|
"core-foundation-sys",
|
||||||
|
"iana-time-zone-haiku",
|
||||||
|
"js-sys",
|
||||||
|
"wasm-bindgen",
|
||||||
|
"windows-core",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "iana-time-zone-haiku"
|
||||||
|
version = "0.1.2"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f"
|
||||||
|
dependencies = [
|
||||||
|
"cc",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "io-kit-sys"
|
||||||
|
version = "0.4.1"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "617ee6cf8e3f66f3b4ea67a4058564628cde41901316e19f559e14c7c72c5e7b"
|
||||||
|
dependencies = [
|
||||||
|
"core-foundation-sys",
|
||||||
|
"mach2",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "js-sys"
|
||||||
|
version = "0.3.77"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "1cfaf33c695fc6e08064efbc1f72ec937429614f25eef83af942d0e227c3a28f"
|
||||||
|
dependencies = [
|
||||||
|
"once_cell",
|
||||||
|
"wasm-bindgen",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "libc"
|
||||||
|
version = "0.2.170"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "875b3680cb2f8f71bdcf9a30f38d48282f5d3c95cbf9b3fa57269bb5d5c06828"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "libredox"
|
||||||
|
version = "0.1.3"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d"
|
||||||
|
dependencies = [
|
||||||
|
"bitflags 2.8.0",
|
||||||
|
"libc",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "libudev"
|
||||||
|
version = "0.3.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "78b324152da65df7bb95acfcaab55e3097ceaab02fb19b228a9eb74d55f135e0"
|
||||||
|
dependencies = [
|
||||||
|
"libc",
|
||||||
|
"libudev-sys",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "libudev-sys"
|
||||||
|
version = "0.1.4"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "3c8469b4a23b962c1396b9b451dda50ef5b283e8dd309d69033475fa9b334324"
|
||||||
|
dependencies = [
|
||||||
|
"libc",
|
||||||
|
"pkg-config",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "linux-raw-sys"
|
||||||
|
version = "0.4.15"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "d26c52dbd32dccf2d10cac7725f8eae5296885fb5703b261f7d0a0739ec807ab"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "log"
|
||||||
|
version = "0.4.26"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "30bde2b3dc3671ae49d8e2e9f044c7c005836e7a023ee57cffa25ab82764bb9e"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "mach2"
|
||||||
|
version = "0.4.2"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "19b955cdeb2a02b9117f121ce63aa52d08ade45de53e48fe6a38b39c10f6f709"
|
||||||
|
dependencies = [
|
||||||
|
"libc",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "memchr"
|
||||||
|
version = "2.7.4"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "memoffset"
|
||||||
|
version = "0.6.5"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "5aa361d4faea93603064a027415f07bd8e1d5c88c9fbf68bf56a285428fd79ce"
|
||||||
|
dependencies = [
|
||||||
|
"autocfg",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "nibble_vec"
|
||||||
|
version = "0.1.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "77a5d83df9f36fe23f0c3648c6bbb8b0298bb5f1939c8f2704431371f4b84d43"
|
||||||
|
dependencies = [
|
||||||
|
"smallvec",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "nix"
|
||||||
|
version = "0.23.2"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "8f3790c00a0150112de0f4cd161e3d7fc4b2d8a5542ffc35f099a2562aecb35c"
|
||||||
|
dependencies = [
|
||||||
|
"bitflags 1.3.2",
|
||||||
|
"cc",
|
||||||
|
"cfg-if",
|
||||||
|
"libc",
|
||||||
|
"memoffset",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "nix"
|
||||||
|
version = "0.26.4"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "598beaf3cc6fdd9a5dfb1630c2800c7acd31df7aaf0f565796fba2b53ca1af1b"
|
||||||
|
dependencies = [
|
||||||
|
"bitflags 1.3.2",
|
||||||
|
"cfg-if",
|
||||||
|
"libc",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "num-traits"
|
||||||
|
version = "0.2.19"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841"
|
||||||
|
dependencies = [
|
||||||
|
"autocfg",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "once_cell"
|
||||||
|
version = "1.20.3"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "945462a4b81e43c4e3ba96bd7b49d834c6f61198356aa858733bc4acf3cbe62e"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "pkg-config"
|
||||||
|
version = "0.3.31"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "953ec861398dccce10c670dfeaf3ec4911ca479e9c02154b3a215178c5f566f2"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "proc-macro2"
|
||||||
|
version = "1.0.93"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "60946a68e5f9d28b0dc1c21bb8a97ee7d018a8b322fa57838ba31cc878e22d99"
|
||||||
|
dependencies = [
|
||||||
|
"unicode-ident",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "quote"
|
||||||
|
version = "1.0.38"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "0e4dccaaaf89514f546c693ddc140f729f958c247918a13380cccc6078391acc"
|
||||||
|
dependencies = [
|
||||||
|
"proc-macro2",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "radix_trie"
|
||||||
|
version = "0.2.1"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "c069c179fcdc6a2fe24d8d18305cf085fdbd4f922c041943e203685d6a1c58fd"
|
||||||
|
dependencies = [
|
||||||
|
"endian-type",
|
||||||
|
"nibble_vec",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "redox_users"
|
||||||
|
version = "0.4.6"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "ba009ff324d1fc1b900bd1fdb31564febe58a8ccc8a6fdbb93b543d33b13ca43"
|
||||||
|
dependencies = [
|
||||||
|
"getrandom",
|
||||||
|
"libredox",
|
||||||
|
"thiserror",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "regex"
|
||||||
|
version = "1.11.1"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191"
|
||||||
|
dependencies = [
|
||||||
|
"aho-corasick",
|
||||||
|
"memchr",
|
||||||
|
"regex-automata",
|
||||||
|
"regex-syntax",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "regex-automata"
|
||||||
|
version = "0.4.9"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908"
|
||||||
|
dependencies = [
|
||||||
|
"aho-corasick",
|
||||||
|
"memchr",
|
||||||
|
"regex-syntax",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "regex-syntax"
|
||||||
|
version = "0.8.5"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "rustix"
|
||||||
|
version = "0.38.44"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154"
|
||||||
|
dependencies = [
|
||||||
|
"bitflags 2.8.0",
|
||||||
|
"errno",
|
||||||
|
"libc",
|
||||||
|
"linux-raw-sys",
|
||||||
|
"windows-sys 0.59.0",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "rustversion"
|
||||||
|
version = "1.0.19"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "f7c45b9784283f1b2e7fb61b42047c2fd678ef0960d4f6f1eba131594cc369d4"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "rustyline"
|
||||||
|
version = "9.1.2"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "db7826789c0e25614b03e5a54a0717a86f9ff6e6e5247f92b369472869320039"
|
||||||
|
dependencies = [
|
||||||
|
"bitflags 1.3.2",
|
||||||
|
"cfg-if",
|
||||||
|
"clipboard-win",
|
||||||
|
"dirs-next",
|
||||||
|
"fd-lock",
|
||||||
|
"libc",
|
||||||
|
"log",
|
||||||
|
"memchr",
|
||||||
|
"nix 0.23.2",
|
||||||
|
"radix_trie",
|
||||||
|
"scopeguard",
|
||||||
|
"smallvec",
|
||||||
|
"unicode-segmentation",
|
||||||
|
"unicode-width",
|
||||||
|
"utf8parse",
|
||||||
|
"winapi",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "scopeguard"
|
||||||
|
version = "1.2.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "serialport"
|
||||||
|
version = "4.7.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "5ecfc4858c2266c7695d8b8460bbd612fa81bd2e250f5f0dd16195e4b4f8b3d8"
|
||||||
|
dependencies = [
|
||||||
|
"bitflags 2.8.0",
|
||||||
|
"cfg-if",
|
||||||
|
"core-foundation",
|
||||||
|
"core-foundation-sys",
|
||||||
|
"io-kit-sys",
|
||||||
|
"libudev",
|
||||||
|
"mach2",
|
||||||
|
"nix 0.26.4",
|
||||||
|
"scopeguard",
|
||||||
|
"unescaper",
|
||||||
|
"winapi",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "shlex"
|
||||||
|
version = "1.3.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "smallvec"
|
||||||
|
version = "1.14.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "7fcf8323ef1faaee30a44a340193b1ac6814fd9b7b4e88e9d4519a3e4abe1cfd"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "str-buf"
|
||||||
|
version = "1.0.6"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "9e08d8363704e6c71fc928674353e6b7c23dcea9d82d7012c8faf2a3a025f8d0"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "syn"
|
||||||
|
version = "2.0.98"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "36147f1a48ae0ec2b5b3bc5b537d267457555a10dc06f3dbc8cb11ba3006d3b1"
|
||||||
|
dependencies = [
|
||||||
|
"proc-macro2",
|
||||||
|
"quote",
|
||||||
|
"unicode-ident",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "thiserror"
|
||||||
|
version = "1.0.69"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52"
|
||||||
|
dependencies = [
|
||||||
|
"thiserror-impl",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "thiserror-impl"
|
||||||
|
version = "1.0.69"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1"
|
||||||
|
dependencies = [
|
||||||
|
"proc-macro2",
|
||||||
|
"quote",
|
||||||
|
"syn",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "uart_server"
|
||||||
|
version = "0.1.0"
|
||||||
|
dependencies = [
|
||||||
|
"chrono",
|
||||||
|
"log",
|
||||||
|
"regex",
|
||||||
|
"rustyline",
|
||||||
|
"serialport",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "unescaper"
|
||||||
|
version = "0.1.5"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "c878a167baa8afd137494101a688ef8c67125089ff2249284bd2b5f9bfedb815"
|
||||||
|
dependencies = [
|
||||||
|
"thiserror",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "unicode-ident"
|
||||||
|
version = "1.0.17"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "00e2473a93778eb0bad35909dff6a10d28e63f792f16ed15e404fca9d5eeedbe"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "unicode-segmentation"
|
||||||
|
version = "1.12.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "unicode-width"
|
||||||
|
version = "0.1.14"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "7dd6e30e90baa6f72411720665d41d89b9a3d039dc45b8faea1ddd07f617f6af"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "utf8parse"
|
||||||
|
version = "0.2.2"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "wasi"
|
||||||
|
version = "0.11.0+wasi-snapshot-preview1"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "wasm-bindgen"
|
||||||
|
version = "0.2.100"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "1edc8929d7499fc4e8f0be2262a241556cfc54a0bea223790e71446f2aab1ef5"
|
||||||
|
dependencies = [
|
||||||
|
"cfg-if",
|
||||||
|
"once_cell",
|
||||||
|
"rustversion",
|
||||||
|
"wasm-bindgen-macro",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "wasm-bindgen-backend"
|
||||||
|
version = "0.2.100"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "2f0a0651a5c2bc21487bde11ee802ccaf4c51935d0d3d42a6101f98161700bc6"
|
||||||
|
dependencies = [
|
||||||
|
"bumpalo",
|
||||||
|
"log",
|
||||||
|
"proc-macro2",
|
||||||
|
"quote",
|
||||||
|
"syn",
|
||||||
|
"wasm-bindgen-shared",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "wasm-bindgen-macro"
|
||||||
|
version = "0.2.100"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "7fe63fc6d09ed3792bd0897b314f53de8e16568c2b3f7982f468c0bf9bd0b407"
|
||||||
|
dependencies = [
|
||||||
|
"quote",
|
||||||
|
"wasm-bindgen-macro-support",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "wasm-bindgen-macro-support"
|
||||||
|
version = "0.2.100"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de"
|
||||||
|
dependencies = [
|
||||||
|
"proc-macro2",
|
||||||
|
"quote",
|
||||||
|
"syn",
|
||||||
|
"wasm-bindgen-backend",
|
||||||
|
"wasm-bindgen-shared",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "wasm-bindgen-shared"
|
||||||
|
version = "0.2.100"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "1a05d73b933a847d6cccdda8f838a22ff101ad9bf93e33684f39c1f5f0eece3d"
|
||||||
|
dependencies = [
|
||||||
|
"unicode-ident",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "winapi"
|
||||||
|
version = "0.3.9"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419"
|
||||||
|
dependencies = [
|
||||||
|
"winapi-i686-pc-windows-gnu",
|
||||||
|
"winapi-x86_64-pc-windows-gnu",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "winapi-i686-pc-windows-gnu"
|
||||||
|
version = "0.4.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "winapi-x86_64-pc-windows-gnu"
|
||||||
|
version = "0.4.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "windows-core"
|
||||||
|
version = "0.52.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9"
|
||||||
|
dependencies = [
|
||||||
|
"windows-targets 0.52.6",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "windows-link"
|
||||||
|
version = "0.1.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "6dccfd733ce2b1753b03b6d3c65edf020262ea35e20ccdf3e288043e6dd620e3"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "windows-sys"
|
||||||
|
version = "0.48.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9"
|
||||||
|
dependencies = [
|
||||||
|
"windows-targets 0.48.5",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "windows-sys"
|
||||||
|
version = "0.59.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b"
|
||||||
|
dependencies = [
|
||||||
|
"windows-targets 0.52.6",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "windows-targets"
|
||||||
|
version = "0.48.5"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c"
|
||||||
|
dependencies = [
|
||||||
|
"windows_aarch64_gnullvm 0.48.5",
|
||||||
|
"windows_aarch64_msvc 0.48.5",
|
||||||
|
"windows_i686_gnu 0.48.5",
|
||||||
|
"windows_i686_msvc 0.48.5",
|
||||||
|
"windows_x86_64_gnu 0.48.5",
|
||||||
|
"windows_x86_64_gnullvm 0.48.5",
|
||||||
|
"windows_x86_64_msvc 0.48.5",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "windows-targets"
|
||||||
|
version = "0.52.6"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973"
|
||||||
|
dependencies = [
|
||||||
|
"windows_aarch64_gnullvm 0.52.6",
|
||||||
|
"windows_aarch64_msvc 0.52.6",
|
||||||
|
"windows_i686_gnu 0.52.6",
|
||||||
|
"windows_i686_gnullvm",
|
||||||
|
"windows_i686_msvc 0.52.6",
|
||||||
|
"windows_x86_64_gnu 0.52.6",
|
||||||
|
"windows_x86_64_gnullvm 0.52.6",
|
||||||
|
"windows_x86_64_msvc 0.52.6",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "windows_aarch64_gnullvm"
|
||||||
|
version = "0.48.5"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "windows_aarch64_gnullvm"
|
||||||
|
version = "0.52.6"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "windows_aarch64_msvc"
|
||||||
|
version = "0.48.5"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "windows_aarch64_msvc"
|
||||||
|
version = "0.52.6"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "windows_i686_gnu"
|
||||||
|
version = "0.48.5"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "windows_i686_gnu"
|
||||||
|
version = "0.52.6"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "windows_i686_gnullvm"
|
||||||
|
version = "0.52.6"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "windows_i686_msvc"
|
||||||
|
version = "0.48.5"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "windows_i686_msvc"
|
||||||
|
version = "0.52.6"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "windows_x86_64_gnu"
|
||||||
|
version = "0.48.5"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "windows_x86_64_gnu"
|
||||||
|
version = "0.52.6"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "windows_x86_64_gnullvm"
|
||||||
|
version = "0.48.5"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "windows_x86_64_gnullvm"
|
||||||
|
version = "0.52.6"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "windows_x86_64_msvc"
|
||||||
|
version = "0.48.5"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "windows_x86_64_msvc"
|
||||||
|
version = "0.52.6"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec"
|
11
Cargo.toml
Normal file
11
Cargo.toml
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
[package]
|
||||||
|
name = "uart_server"
|
||||||
|
version = "0.1.0"
|
||||||
|
edition = "2021"
|
||||||
|
|
||||||
|
[dependencies]
|
||||||
|
serialport = "4.7.0"
|
||||||
|
rustyline = "9.*"
|
||||||
|
regex = "1.7.0"
|
||||||
|
chrono = "0.4.40"
|
||||||
|
log = "0.4.26"
|
132
src/.vimrc
Normal file
132
src/.vimrc
Normal file
@ -0,0 +1,132 @@
|
|||||||
|
set tabstop=4
|
||||||
|
set softtabstop=4
|
||||||
|
set shiftwidth=4
|
||||||
|
set noexpandtab
|
||||||
|
set colorcolumn=90
|
||||||
|
highlight ColorColumnt ctermbg=darkgray
|
||||||
|
augroup project
|
||||||
|
autocmd!
|
||||||
|
autocmd BufRead,BufNewFile *.h,*.c set filetype=c.doxygen
|
||||||
|
augroup END
|
||||||
|
let &path.="src/include, src/source,"
|
||||||
|
|
||||||
|
" Включаем использование системного буфера
|
||||||
|
set clipboard=unnamedplus
|
||||||
|
|
||||||
|
" Работа с текстом
|
||||||
|
|
||||||
|
" Python использует 4 пробела для отступов
|
||||||
|
autocmd FileType python setlocal tabstop=4 shiftwidth=4
|
||||||
|
|
||||||
|
" Кодировка текста
|
||||||
|
set encoding=utf-8
|
||||||
|
set fileencoding=utf-8
|
||||||
|
set fileencodings=utf-8,cp1251,koi8-r,cp866
|
||||||
|
|
||||||
|
" Поиск по тексту
|
||||||
|
set hlsearch " подсвечивать результаты поиска
|
||||||
|
|
||||||
|
" Перемещение по тексту
|
||||||
|
" Когда достигаем границ строки, то перемещаемся на предыдующую/следующую
|
||||||
|
set whichwrap+=h,l,<,>,[,]
|
||||||
|
|
||||||
|
set number
|
||||||
|
|
||||||
|
" Настройки автодополнения
|
||||||
|
set completeopt=menu,menuone,noselect
|
||||||
|
|
||||||
|
" Разделение экрана
|
||||||
|
set splitbelow " разбивать вниз
|
||||||
|
set splitright " разбивать вправо
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
" сочетание клавиш
|
||||||
|
|
||||||
|
" Использование h, j, k, l для перемещения с зажатым Ctrl в режиме
|
||||||
|
" редактирования
|
||||||
|
inoremap <C-h> <Left>
|
||||||
|
inoremap <C-j> <Down>
|
||||||
|
inoremap <C-k> <Up>
|
||||||
|
inoremap <C-l> <Right>
|
||||||
|
|
||||||
|
let g:mapleader = "\<Space>"
|
||||||
|
|
||||||
|
" Переключение между вкладками
|
||||||
|
nnoremap <leader>t :tabnext<CR>
|
||||||
|
nnoremap <leader>T :tabprevious<CR>
|
||||||
|
|
||||||
|
" Список вкладок
|
||||||
|
nnoremap <leader>tl :tabs<CR>
|
||||||
|
|
||||||
|
" nnoremap <leader>tn :tabnew<CR>
|
||||||
|
nnoremap <leader>tc :tabclose<CR>
|
||||||
|
nnoremap <leader>to :tabonly<CR>
|
||||||
|
nnoremap <leader>tm :tabmove<CR>
|
||||||
|
|
||||||
|
" Редактировать файл в новой вкладке
|
||||||
|
nnoremap <leader>te :tabedit |
|
||||||
|
|
||||||
|
" Выбор вкладки
|
||||||
|
nnoremap <leader>1 1gt
|
||||||
|
nnoremap <leader>2 2gt
|
||||||
|
nnoremap <leader>3 3gt
|
||||||
|
nnoremap <leader>4 4gt
|
||||||
|
nnoremap <leader>5 5gt
|
||||||
|
nnoremap <leader>6 6gt
|
||||||
|
nnoremap <leader>7 7gt
|
||||||
|
nnoremap <leader>8 8gt
|
||||||
|
nnoremap <leader>9 9gt
|
||||||
|
nnoremap <leader>0 :tablast<CR>
|
||||||
|
|
||||||
|
" Разбиение окон
|
||||||
|
nnoremap <leader>s :split<CR>
|
||||||
|
nnoremap <leader>v :vsplit<CR>
|
||||||
|
|
||||||
|
" Выбор окна
|
||||||
|
nnoremap <C-h> <C-w>h
|
||||||
|
nnoremap <C-j> <C-w>j
|
||||||
|
nnoremap <C-k> <C-w>k
|
||||||
|
nnoremap <C-l> <C-w>l
|
||||||
|
|
||||||
|
" Размер окна
|
||||||
|
nnoremap <C-u> <C-w>+
|
||||||
|
nnoremap <C-d> <C-w>-
|
||||||
|
nnoremap <C-p> <C-w><
|
||||||
|
nnoremap <C-n> <C-w>>
|
||||||
|
|
||||||
|
" Vimspector
|
||||||
|
" nnoremap <leader><F2> <F10>
|
||||||
|
" nnoremap <leader>q <F11>
|
||||||
|
nmap <Leader><Right> <Plug>VimspectorStepOver
|
||||||
|
nmap <Leader><Down> <Plug>VimspectorStepInto
|
||||||
|
nmap <Leader><Up> <Plug>VimspectorStepOut
|
||||||
|
nmap <Leader><Tab> <Plug>VimspectorDisassemble
|
||||||
|
|
||||||
|
" Сделать окна одного размера
|
||||||
|
nnoremap <leader>= <C-w>=
|
||||||
|
|
||||||
|
" Переключения между буферами
|
||||||
|
" nnoremap <leader>b :bnext<CR>
|
||||||
|
" nnoremap <leader>B :bprevious<CR>
|
||||||
|
" nnoremap <leader>l :ls<CR>
|
||||||
|
" nnoremap <leader>d :bd<CR>
|
||||||
|
|
||||||
|
" " Скрыть/раскрыть блок кода
|
||||||
|
" nnoremap <leader>z za
|
||||||
|
|
||||||
|
|
||||||
|
" настройка плагинов
|
||||||
|
|
||||||
|
" настройки для отступов
|
||||||
|
" let g:indent_guides_enable_on_vim_startup = 1
|
||||||
|
" Настройки для разноцветной подсветки скобок
|
||||||
|
let g:rainbow_active = 1
|
||||||
|
" Настройки для vim-airline
|
||||||
|
let g:airline#extensions#tabline#enabled = 1
|
||||||
|
let g:airline#extensions#tabline#buffer_nr_show = 1
|
||||||
|
let g:airline#extensions#tabline#formatter = 'unique_tail'
|
||||||
|
let g:airline_powerline_fonts = 1
|
||||||
|
let g:airline_solarized_bg = 'luna'
|
||||||
|
|
||||||
|
let g:vimspector_enable_mappings = 'HUMAN'
|
379
src/main.rs
Normal file
379
src/main.rs
Normal file
@ -0,0 +1,379 @@
|
|||||||
|
use std::time::Duration;
|
||||||
|
use std::{thread, time};
|
||||||
|
use serialport::{SerialPort, StopBits, Parity, FlowControl, DataBits};
|
||||||
|
use std::io::{self, Read, Write, BufWriter};
|
||||||
|
use regex::Regex;
|
||||||
|
use rustyline::Editor;
|
||||||
|
use rustyline::error::ReadlineError;
|
||||||
|
use std::fs::OpenOptions;
|
||||||
|
use std::io::{BufReader, BufRead};
|
||||||
|
|
||||||
|
pub mod perf {
|
||||||
|
use chrono::{DateTime, Duration, Utc, Local};
|
||||||
|
|
||||||
|
pub struct Perf {
|
||||||
|
start: DateTime<Utc>,
|
||||||
|
end: DateTime<Utc>,
|
||||||
|
delta_ms: i64,
|
||||||
|
delta_mks: i64,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl Perf {
|
||||||
|
pub fn new() -> Perf {
|
||||||
|
Perf {
|
||||||
|
start: Utc::now(),
|
||||||
|
end: Utc::now(),
|
||||||
|
delta_ms: 0,
|
||||||
|
delta_mks: 0,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn start(&mut self) {
|
||||||
|
self.start = Utc::now();
|
||||||
|
}
|
||||||
|
|
||||||
|
// measure: "ms" or "mks"
|
||||||
|
pub fn stop(&mut self, out_msg: &str, measure: &str) {
|
||||||
|
self.end = Utc::now();
|
||||||
|
self.delta_ms = (self.end - self.start).num_microseconds().unwrap()/1000;
|
||||||
|
self.delta_mks = (self.end - self.start).num_microseconds().unwrap();
|
||||||
|
|
||||||
|
if (measure == "ms") { println!("{} (ms): {:?}", out_msg, self.delta_ms); }
|
||||||
|
else { println!("{} (mks): {:?}", out_msg, self.delta_mks); }
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn stop_restart(&mut self, out_msg: &str, measure: &str) {
|
||||||
|
self.stop(out_msg, measure);
|
||||||
|
self.start = Utc::now();
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn cur_time(format: &str) -> String {
|
||||||
|
let now = Local::now();
|
||||||
|
let fmt = now.format(format).to_string();
|
||||||
|
return fmt;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn read_str(s: &str) -> Result<Vec<String>, String> {
|
||||||
|
let re = match Regex::new(r#""([^"]+)"|(\S+)"#) {
|
||||||
|
Ok(val) => val,
|
||||||
|
Err(_) => { return Err(format!("Error in regex!")); }
|
||||||
|
};
|
||||||
|
|
||||||
|
let res: Vec<String> = re.find_iter(&s)
|
||||||
|
.map(|match_| match_.as_str().to_owned().replace("\"", ""))
|
||||||
|
.collect();
|
||||||
|
|
||||||
|
Ok(res)
|
||||||
|
}
|
||||||
|
|
||||||
|
fn set_port_settings(port_name: &str, baud_rate: u32, data_bits: DataBits, parity: Parity,
|
||||||
|
stop_bits: StopBits, flow_ctrl: FlowControl, timeout_msec: u64) -> Result<Box<dyn SerialPort>, String> {
|
||||||
|
|
||||||
|
let mut port = match serialport::new(port_name, baud_rate)
|
||||||
|
.timeout(Duration::from_millis(timeout_msec)).open() {
|
||||||
|
Ok(p) => p,
|
||||||
|
Err(msg) => return Err(format!("{}", msg)),
|
||||||
|
};
|
||||||
|
|
||||||
|
port.set_baud_rate(baud_rate).unwrap();
|
||||||
|
port.set_data_bits(data_bits).unwrap();
|
||||||
|
port.set_parity(parity).unwrap();
|
||||||
|
port.set_stop_bits(stop_bits).unwrap();
|
||||||
|
port.set_flow_control(flow_ctrl).unwrap();
|
||||||
|
return Ok(port);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
fn tx_rx_data<W: std::io::Write>(port_name: &str,
|
||||||
|
mut data_out: String,
|
||||||
|
cmd_writer: &mut BufWriter<W>,
|
||||||
|
data_writer: &mut BufWriter<W>,
|
||||||
|
save_data_flag: bool,
|
||||||
|
save_cmd_flag: bool) {
|
||||||
|
use crate::perf::Perf;
|
||||||
|
let mut perf = Perf::new();
|
||||||
|
perf.start();
|
||||||
|
// let port_name = &args[1];
|
||||||
|
let mut port = match set_port_settings(port_name, 19200,
|
||||||
|
DataBits::Eight,
|
||||||
|
Parity::Even,
|
||||||
|
StopBits::One,
|
||||||
|
FlowControl::None, 100) {
|
||||||
|
Ok(set) => {set},
|
||||||
|
Err(msg) => { println!("error while opening com-port ({}): {}", port_name, msg); return }
|
||||||
|
};
|
||||||
|
|
||||||
|
perf.stop_restart("time open port", "ms");
|
||||||
|
|
||||||
|
if save_cmd_flag == true {
|
||||||
|
writeln!(cmd_writer, "{};{};{}", Perf::cur_time("%Y.%m.%d"),
|
||||||
|
Perf::cur_time("%H:%M:%S.%f"), data_out.trim()).expect("err");
|
||||||
|
}
|
||||||
|
|
||||||
|
data_out.push_str(std::str::from_utf8(b"\x0D\x0A").unwrap()); // CR + LF
|
||||||
|
match port.write(data_out.as_bytes()) {
|
||||||
|
Ok(_) => {},
|
||||||
|
Err(e) => eprintln!("Error sending data: {}", e),
|
||||||
|
}
|
||||||
|
|
||||||
|
port.flush().unwrap();
|
||||||
|
|
||||||
|
perf.stop_restart("time write to port", "ms");
|
||||||
|
|
||||||
|
let mut reader = BufReader::new(port);
|
||||||
|
let mut s = String::new();
|
||||||
|
reader.read_line(&mut s).unwrap();
|
||||||
|
if s.len() > 0 {
|
||||||
|
let data = format!("{}: {}", Perf::cur_time("%H:%M:%S.%f"), s.trim());
|
||||||
|
println!("{}", data);
|
||||||
|
if save_data_flag == true {
|
||||||
|
writeln!(data_writer, "{}",
|
||||||
|
format!("{};{};{}",
|
||||||
|
Perf::cur_time("%Y.%m.%d"),
|
||||||
|
Perf::cur_time("%H:%M:%S.%f"),
|
||||||
|
s.trim()))
|
||||||
|
.expect("err");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
perf.stop("time for receive data", "ms");
|
||||||
|
|
||||||
|
// let mut buffer = Vec::new();
|
||||||
|
// match port.read_to_end(&mut buffer) {
|
||||||
|
// Ok(_) => {
|
||||||
|
// if buffer.len() > 0 {
|
||||||
|
// let data = format!("{}: {:?}", cur_time("%H:%M:%S"), buffer);
|
||||||
|
// println!("{}", data);
|
||||||
|
// if save_data_flag == true {
|
||||||
|
// writeln!(data_writer, "{}",
|
||||||
|
// format!("{};{};{}",
|
||||||
|
// cur_time("%Y.%m.%d"),
|
||||||
|
// cur_time("%H:%M:%S"),
|
||||||
|
// String::from_utf8(buffer).expect("msg")))
|
||||||
|
// .expect("err");
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// },
|
||||||
|
// Err(msg) => eprintln!("{}", msg),
|
||||||
|
// }
|
||||||
|
|
||||||
|
// let mut cnt: u32 = 0;
|
||||||
|
// let mut i = 0;
|
||||||
|
// let mut buf: String = String::new();
|
||||||
|
|
||||||
|
// let start = Utc::now();
|
||||||
|
// let mut timeout_flag = false;
|
||||||
|
|
||||||
|
// let mut delta1 = 0;
|
||||||
|
// while cnt == 0 {
|
||||||
|
// cnt = match port.bytes_to_read() {
|
||||||
|
// Ok(c) => c,
|
||||||
|
// Err(msg) => { println!("{}", msg); return; }
|
||||||
|
// };
|
||||||
|
// let delta = Utc::now() - start;
|
||||||
|
// delta1 = delta.num_microseconds().unwrap()/1000;
|
||||||
|
// if delta1 > timeout_ms {
|
||||||
|
// println!("timeout: {}", delta1);
|
||||||
|
// timeout_flag = true;
|
||||||
|
// break;
|
||||||
|
// };
|
||||||
|
// }
|
||||||
|
|
||||||
|
// println!("time (ms): {}", delta1);
|
||||||
|
|
||||||
|
// // println!("time (ms): {:?}", delta.num_microseconds().unwrap()/1000);
|
||||||
|
|
||||||
|
// if timeout_flag == false {
|
||||||
|
// while i < 500000 {
|
||||||
|
// // thread::sleep(time::Duration::from_millis(10));
|
||||||
|
// i += 1;
|
||||||
|
// let mut buffer = [0u8; 4096];
|
||||||
|
|
||||||
|
// cnt = match port.bytes_to_read() {
|
||||||
|
// Ok(c) => c,
|
||||||
|
// Err(msg) => { println!("{}", msg); return; }
|
||||||
|
// };
|
||||||
|
|
||||||
|
// if cnt > 0 {
|
||||||
|
// match port.read(&mut buffer) {
|
||||||
|
// Ok(count) => {
|
||||||
|
// let s = std::str::from_utf8(&buffer[..count]).unwrap();
|
||||||
|
// buf.push_str(s);
|
||||||
|
// println!("{}", s);
|
||||||
|
// },
|
||||||
|
|
||||||
|
// Err(ref e) if e.kind() == io::ErrorKind::TimedOut => { println!("timeout!"); },
|
||||||
|
// Err(e) => eprintln!("error reading from port ({}): {}", port_name, e),
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// else {}
|
||||||
|
// }
|
||||||
|
|
||||||
|
// }
|
||||||
|
|
||||||
|
|
||||||
|
// if buf.len() > 0 {
|
||||||
|
// let data = format!("{}: {:?}", cur_time("%H:%M:%S"), buf);
|
||||||
|
// println!("{}", data);
|
||||||
|
// if save_data_flag == true {
|
||||||
|
// writeln!(data_writer, "{};{};{}", cur_time("%Y.%m.%d"), cur_time("%H:%M:%S"), buf.trim()).expect("err");
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
fn main() {
|
||||||
|
use crate::perf::Perf;
|
||||||
|
let mut perf = Perf::new();
|
||||||
|
|
||||||
|
let data_log_path = "../log/data.log";
|
||||||
|
let file = OpenOptions::new()
|
||||||
|
.write(true)
|
||||||
|
.append(true)
|
||||||
|
.open(data_log_path)
|
||||||
|
.expect("error opening file ");
|
||||||
|
|
||||||
|
let mut data_writer = BufWriter::new(file);
|
||||||
|
|
||||||
|
let data_log_path = "../log/cmd.log";
|
||||||
|
let file = OpenOptions::new()
|
||||||
|
.write(true)
|
||||||
|
.append(true)
|
||||||
|
.open(data_log_path)
|
||||||
|
.expect("error opening file ");
|
||||||
|
|
||||||
|
let mut cmd_writer = BufWriter::new(file);
|
||||||
|
|
||||||
|
let mut save_data_flag = false;
|
||||||
|
let mut save_cmd_flag = false;
|
||||||
|
|
||||||
|
let timeout_ms = 1000;
|
||||||
|
let fname_hist = "../settings/cmd_history.log".to_string();
|
||||||
|
let mut editor = Editor::<()>::new();
|
||||||
|
if editor.load_history(&fname_hist).is_err() {
|
||||||
|
println!("error while reading cmd_history.log file!", );
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
loop {
|
||||||
|
let s: String = match editor.readline(">> ") {
|
||||||
|
Ok(s_) => s_.to_string(),
|
||||||
|
Err(ReadlineError::Interrupted) => {
|
||||||
|
editor.save_history(&fname_hist)
|
||||||
|
.expect("error while save the command to the history file (cmd_history.log)");
|
||||||
|
return;
|
||||||
|
},
|
||||||
|
Err(ReadlineError::Eof) => {
|
||||||
|
editor.save_history(&fname_hist)
|
||||||
|
.expect("error while save the command to the history file (cmd_history.log)");
|
||||||
|
return;
|
||||||
|
},
|
||||||
|
Err(msg) => {
|
||||||
|
println!("{}{:?}",
|
||||||
|
"unknown command",
|
||||||
|
msg);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
editor.add_history_entry(&s);
|
||||||
|
|
||||||
|
let args = match read_str(&s) {
|
||||||
|
Ok(arg) => arg,
|
||||||
|
Err(msg) => {
|
||||||
|
println!("{}", msg);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
let args_cnt = args.len();
|
||||||
|
|
||||||
|
let cmd_head = &args[0].clone();
|
||||||
|
|
||||||
|
if cmd_head.contains("exit") { break; }
|
||||||
|
else if cmd_head.contains("help") {
|
||||||
|
println!("Serial port terminal supports the following commands:");
|
||||||
|
println!("exit - excecute quit from this program");
|
||||||
|
println!("help - explain how to use this program");
|
||||||
|
println!("show_ports - shows all available serial ports");
|
||||||
|
println!("send <port name> <data> - sends specified <data> to <port name>");
|
||||||
|
println!("send_loop <port name> <data> <count times> <period in msec> - sends specified <data> to <port name> in loop mode: <count times> times with period specified in <period in msec> ");
|
||||||
|
println!("open_port <port name> <speed> <data bits> <parity> <stop bits> <flow control> - opens specified <port name> with specified settings");
|
||||||
|
println!("save_data_log <enable/disable>");
|
||||||
|
println!("save_cmd_log <enable/disable>");
|
||||||
|
}
|
||||||
|
else if cmd_head.contains("save_data_log") {
|
||||||
|
if args_cnt != 2 { eprintln!("Error while parse command! {}", "arguments count must be 1"); }
|
||||||
|
|
||||||
|
if args[1].contains("enable") { save_data_flag = true; }
|
||||||
|
else { save_data_flag = false; }
|
||||||
|
}
|
||||||
|
else if cmd_head.contains("save_cmd_log") {
|
||||||
|
if args_cnt != 2 { eprintln!("Error while parse command! {}", "arguments count must be 1"); }
|
||||||
|
|
||||||
|
if args[1].contains("enable") { save_cmd_flag = true; }
|
||||||
|
else { save_cmd_flag = false; }
|
||||||
|
}
|
||||||
|
else if cmd_head.contains("show_ports") {
|
||||||
|
match serialport::available_ports() {
|
||||||
|
Ok(ports) => {
|
||||||
|
for port in ports {
|
||||||
|
println!("{}: {:?}", port.port_name, port.port_type);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Err(msg) => { eprintln!("error while get all available serial port list: {}", msg); return; }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if cmd_head == "send" {
|
||||||
|
if args_cnt != 3 { eprintln!("Error while parse command! {}", "arguments count must be 2"); }
|
||||||
|
else {
|
||||||
|
tx_rx_data(&args[1],
|
||||||
|
args[2].clone(),
|
||||||
|
&mut cmd_writer,
|
||||||
|
&mut data_writer,
|
||||||
|
save_data_flag,
|
||||||
|
save_cmd_flag);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if cmd_head == "send_loop" {
|
||||||
|
if args_cnt != 5 { eprintln!("Error while parse command! {}", "arguments count must be 4"); }
|
||||||
|
else {
|
||||||
|
let cnt = args[3].parse::<u32>().unwrap();
|
||||||
|
let period = args[4].parse::<u64>().unwrap();
|
||||||
|
let mut i = 0;
|
||||||
|
while (i < cnt) {
|
||||||
|
i += 1;
|
||||||
|
tx_rx_data(&args[1],
|
||||||
|
args[2].clone(),
|
||||||
|
&mut cmd_writer,
|
||||||
|
&mut data_writer,
|
||||||
|
save_data_flag,
|
||||||
|
save_cmd_flag);
|
||||||
|
|
||||||
|
thread::sleep(time::Duration::from_millis(period));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if cmd_head.contains("open port") {
|
||||||
|
|
||||||
|
if args_cnt != 8 { eprintln!("Error while parse command! {}", "arguments count must be 8"); }
|
||||||
|
else {
|
||||||
|
// println!("open port <port name> <speed> <data bits> <parity> <stop bits> <flow control> - opens specified <port name> with specified settings");
|
||||||
|
// let port_name = args[2].clone();
|
||||||
|
// let speed = args[3].clone();
|
||||||
|
// let data_bits = args[4].clone();
|
||||||
|
// let parity = args[5].clone();
|
||||||
|
// let stop_bits = args[6].clone();
|
||||||
|
// let flow_ctrl = args[7].clone();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// close ports
|
||||||
|
editor.save_history(&fname_hist).unwrap();
|
||||||
|
// drop(port1);
|
||||||
|
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user