Serial — это пакет интерфейса последовательного порта (UART) на языке Go, который позволяет использовать стандартные системные функции чтения и записи файлов для приёма и передачи потока байтов через последовательный порт.
8 N 1 N (количество бит данных: 8, проверка на чётность: N, количество стоповых битов: 1, управление потоком данных: N).
package main
import (
"log"
"github.com/xluohome/serial"
)
func main() {
c := &serial.Config{Name: "COM9", Baud: 9600}
s, err := serial.OpenPort(c)
if err != nil {
log.Fatal(err)
}
txbuf := []byte{0xAA, 0x01, 0x0f, 0x00, 0x00, 0xBA}
n, err = s.Write(txbuf)
if err != nil {
log.Fatal(err)
}
buf := make([]byte, 128)
n, err = s.Read(buf)
if err != nil {
log.Fatal(err)
}
log.Printf("%X\n", buf[:n])
}
По умолчанию возвращённый порт считывает данные в блокирующем режиме. Это означает, что Read()
будет блокироваться до тех пор, пока не будет получен хотя бы один байт. Если это не то, что вам нужно, укажите положительное значение ReadTimeout
, и Read()
вернёт тайм-аут 0 байтов, если байты не были прочитаны. Обратите внимание, что это общий тайм-аут, который ожидает операция чтения, а не интервал тайм-аута между двумя байтами.
c := &serial.Config{Name: "COM45", Baud: 115200, ReadTimeout: time.Second * 5}
// В этом режиме вы захотите подавить ошибку при чтении,
// так как 0 байтов возвращают ошибку EOF в Linux / POSIX
n, _ = s.Read(buf)
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )