Go binding to libserialport for serial port functionality.

Overview

Go Serial

GoDoc

Package serial provides a binding to libserialport for serial port functionality. Serial ports are commonly used with embedded systems, such as the Arduino platform.

Usage

package main

import (
  "github.com/mikepb/go-serial"
  "log"
)

func main() {
  options := serial.RawOptions
  options.BitRate = 115200
  p, err := options.Open("/dev/tty")
  if err != nil {
    log.Panic(err)
  }

  defer p.Close()

  buf := make([]byte, 1)
  if _, err := p.Read(buf); err != nil {
    log.Panic(err)
  } else {
    log.Println(buf)
  }
}

Documentation

https://godoc.org/github.com/mikepb/go-serial

License

Copyright 2014 Michael Phan-Ba

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

Files from the libserialport library are licensed under the GNU Lesser General Public License. These files include in the header the notice that follows.

This file is part of the libserialport project.

Copyright (C) 2010-2012 Bert Vermeulen <[email protected]>
Copyright (C) 2010-2012 Uwe Hermann <[email protected]>
Copyright (C) 2013-2014 Martin Ling <[email protected]>
Copyright (C) 2013 Matthias Heidbrink <[email protected]>
Copyright (C) 2014 Aurelien Jacobs <[email protected]>

This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as
published by the Free Software Foundation, either version 3 of the
License, or (at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU Lesser General Public License
along with this program.  If not, see <http://www.gnu.org/licenses/>.
Comments
  • Couldn't get this to work with Socat

    Couldn't get this to work with Socat

    This library works great under Linux on the Raspberry Pi. However, I generally develop on a Mac and was trying to emulate the devices involved for testing and debugging. I have two "fake" PTY's installed with Socat (/dev/ttys003, /dev/ttys004). I have been unsuccessful so far at making this code open either of these ports. It works perfectly with real physical hardware. I couldn't see where it was actually failing, but the error message is:

    Invalid arguments were passed to the function
    panic: runtime error: invalid memory address or nil pointer dereference
    [signal 0xb code=0x1 addr=0x0 pc=0x4034053]
    
    goroutine 16 [running]:
    runtime.panic(0x40f6380, 0x41ab2e4)
        /usr/local/Cellar/go/1.3.3/libexec/src/pkg/runtime/panic.c:279 +0xf5
    github.com/mikepb/serial.(*Port).Write(0x0, 0xc208000280, 0x4, 0x8, 0x8, 0x0, 0x0)
        /Users/josh/projects/propellerhead/src/github.com/mikepb/serial/serial.go:972 +0x263
    main.main()
        /Users/josh/projects/propellerhead/src/serialtest.go:16 +0x17a
    
    goroutine 19 [runnable]:
    runfinq()
        /usr/local/Cellar/go/1.3.3/libexec/src/pkg/runtime/mgc0.c:2606
    runtime.goexit()
        /usr/local/Cellar/go/1.3.3/libexec/src/pkg/runtime/proc.c:1445
    
    goroutine 17 [syscall]:
    runtime.goexit()
        /usr/local/Cellar/go/1.3.3/libexec/src/pkg/runtime/proc.c:1445
    exit status 2
    
    

    from the following Go code

    package main
    
    import (
        "github.com/mikepb/serial"
        "fmt"
    )
    
    
    func main() {
        info, err := serial.PortByName("/dev/ttys003")
        config := serial.RawOptions
        config.FlowControl = serial.FLOWCONTROL_RTSCTS
        config.BitRate = 9600
        port, err := info.OpenPort(&config)
        fmt.Println(err)
        port.Write([]byte("test"))
    }
    

    PTYs created with: socat -x -v PTY,raw,echo=0,link=tty1 PTY,raw,echo=0,link=tty2

    opened by jimbojsb 4
  • Unused parameter warnings

    Unused parameter warnings

    As soon as I use this package somewhere in my code I always get these warnings. If not problematic so it is at least very annoying.

    Already the go get command shows:

    Apples-MacBook-Pro:src $ go get github.com/mikepb/go-serial/ # github.com/mikepb/go-serial .../github.com/mikepb/go-serial/_obj/_cgo_main.c:2:61: warning: unused parameter 'a' [-Wunused-parameter] .../github.com/mikepb/go-serial/_obj/_cgo_main.c:2:23: warning: unused parameter 'fn' [-Wunused-parameter] .../github.com/mikepb/go-serial/_obj/_cgo_main.c:2:68: warning: unused parameter 'c' [-Wunused-parameter] .../github.com/mikepb/go-serial/_obj/_cgo_main.c:2:85: warning: unused parameter 'ctxt' [-Wunused-parameter] .../github.com/mikepb/go-serial/_obj/_cgo_main.c:4:41: warning: unused parameter 'ctxt' [-Wunused-parameter] .../github.com/mikepb/go-serial/_obj/_cgo_main.c:6:26: warning: unused parameter 'a' [-Wunused-parameter] .../github.com/mikepb/go-serial/_obj/_cgo_main.c:6:33: warning: unused parameter 'c' [-Wunused-parameter] .../github.com/mikepb/go-serial/_obj/_cgo_main.c:7:23: warning: unused parameter 'a' [-Wunused-parameter] .../github.com/mikepb/go-serial/_obj/_cgo_main.c:7:30: warning: unused parameter 'c' [-Wunused-parameter]

    Am I doing something wrong?

    I tested it with go 1.6 and go 1.7.1: same issue.

    opened by tehsphinx 2
  • Blocking read now returns when device is unplugged. i.e. device node is removed

    Blocking read now returns when device is unplugged. i.e. device node is removed

    Block read calls keeps blocking even when the device node disappears. This happens when an Arduino is unplugged. Fixed, by returning a failure when EOF is returned by read(). I.e. the serial port is closed.

    opened by jaapgeurts 1
  • Added read/write functional with timeout var (instead of deadline)

    Added read/write functional with timeout var (instead of deadline)

    I guess it can be useful for somebody to set the timeout (time.Duration) for Read / Write methods instead of using the timestamp before each run the method.

    opened by zavorotynskiy 1
  • Build warnings

    Build warnings

    Compiling produces the following warnings.

    _cgo_main.c:2:23: warning: unused parameter 'fn' [-Wunused-parameter]
    _cgo_main.c:2:61: warning: unused parameter 'a' [-Wunused-parameter]
    _cgo_main.c:2:68: warning: unused parameter 'c' [-Wunused-parameter]
    _cgo_main.c:2:85: warning: unused parameter 'ctxt' [-Wunused-parameter]
    _cgo_main.c:4:41: warning: unused parameter 'ctxt' [-Wunused-parameter]
    _cgo_main.c:6:26: warning: unused parameter 'a' [-Wunused-parameter]
    _cgo_main.c:6:33: warning: unused parameter 'c' [-Wunused-parameter]
    _cgo_main.c:7:23: warning: unused parameter 'a' [-Wunused-parameter]
    _cgo_main.c:7:30: warning: unused parameter 'c' [-Wunused-parameter]
    
    opened by borud 0
  • How to build on Windows ?

    How to build on Windows ?

    When trying to build project on windows I get th following error:

    # github.com/facchinm/go-serial-native
    src\github.com\facchinm\go-serial-native\windows.c: In function 'wc_to_utf8':
    src\github.com\facchinm\go-serial-native\windows.c:52:43: error: 'WC_NO_BEST_FIT_CHARS' undeclared (first use in this function)
      if (!(size = WideCharToMultiByte(CP_ACP, WC_NO_BEST_FIT_CHARS, wc_str, -1,
                                               ^
    src\github.com\facchinm\go-serial-native\windows.c:52:43: note: each undeclared identifier is reported only once for each function it appears in
    src\github.com\facchinm\go-serial-native\windows.c: In function 'enumerate_hub_ports':
    src\github.com\facchinm\go-serial-native\windows.c:169:3: error: unknown type name 'PUSB_NODE_CONNECTION_INFORMATION_EX'
       PUSB_NODE_CONNECTION_INFORMATION_EX connection_info_ex;
       ^
    src\github.com\facchinm\go-serial-native\windows.c:170:23: error: invalid type argument of unary '*' (have 'int')
       ULONG size = sizeof(*connection_info_ex) + 30*sizeof(USB_PIPE_INFO);
                           ^
    src\github.com\facchinm\go-serial-native\windows.c:172:28: warning: assignment makes integer from pointer without a cast [-Wint-conversion]
       if (!(connection_info_ex = malloc(size)))
                                ^
    src\github.com\facchinm\go-serial-native\windows.c:175:21: error: invalid type argument of '->' (have 'int')
       connection_info_ex->ConnectionIndex = index;
                         ^
    src\github.com\facchinm\go-serial-native\windows.c:177:24: error: 'IOCTL_USB_GET_NODE_CONNECTION_INFORMATION_EX' undeclared (first use in this function)
                            IOCTL_USB_GET_NODE_CONNECTION_INFORMATION_EX,
                            ^
    src\github.com\facchinm\go-serial-native\windows.c:178:24: warning: passing argument 3 of 'DeviceIoControl' makes pointer from integer without a cast [-Wint-conversion]
                            connection_info_ex, size,
                            ^
    In file included from c:/TDM-GCC-32/include/windows.h:50:0,
                     from src\github.com\facchinm\go-serial-native\libserialport.h:89,
                     from src\github.com\facchinm\go-serial-native\windows.c:23:
    c:/TDM-GCC-32/include/winbase.h:1456:24: note: expected 'PVOID {aka void *}' but argument is of type 'int'
     WINBASEAPI BOOL WINAPI DeviceIoControl(HANDLE,DWORD,PVOID,DWORD,PVOID,DWORD,PDWORD,POVERLAPPED);
                            ^
    src\github.com\facchinm\go-serial-native\windows.c:179:24: warning: passing argument 5 of 'DeviceIoControl' makes pointer from integer without a cast [-Wint-conversion]
                            connection_info_ex, size, &size, NULL)) {
                            ^
    In file included from c:/TDM-GCC-32/include/windows.h:50:0,
                     from src\github.com\facchinm\go-serial-native\libserialport.h:89,
                     from src\github.com\facchinm\go-serial-native\windows.c:23:
    c:/TDM-GCC-32/include/winbase.h:1456:24: note: expected 'PVOID {aka void *}' but argument is of type 'int'
     WINBASEAPI BOOL WINAPI DeviceIoControl(HANDLE,DWORD,PVOID,DWORD,PVOID,DWORD,PDWORD,POVERLAPPED);
                            ^
    src\github.com\facchinm\go-serial-native\windows.c:186:10: warning: passing argument 1 of 'free' makes pointer from integer without a cast [-Wint-conversion]
         free(connection_info_ex);
              ^
    In file included from c:/TDM-GCC-32/include/objbase.h:12:0,
                     from c:/TDM-GCC-32/include/ole2.h:9,
                     from c:/TDM-GCC-32/include/windows.h:114,
                     from src\github.com\facchinm\go-serial-native\libserialport.h:89,
                     from src\github.com\facchinm\go-serial-native\windows.c:23:
    c:/TDM-GCC-32/include/stdlib.h:358:38: note: expected 'void *' but argument is of type 'int'
     _CRTIMP void __cdecl __MINGW_NOTHROW free (void*);
                                          ^
    src\github.com\facchinm\go-serial-native\windows.c:195:10: warning: passing argument 1 of 'free' makes pointer from integer without a cast [-Wint-conversion]
         free(connection_info_ex);
              ^
    In file included from c:/TDM-GCC-32/include/objbase.h:12:0,
                     from c:/TDM-GCC-32/include/ole2.h:9,
                     from c:/TDM-GCC-32/include/windows.h:114,
                     from src\github.com\facchinm\go-serial-native\libserialport.h:89,
                     from src\github.com\facchinm\go-serial-native\windows.c:23:
    c:/TDM-GCC-32/include/stdlib.h:358:38: note: expected 'void *' but argument is of type 'int'
     _CRTIMP void __cdecl __MINGW_NOTHROW free (void*);
                                          ^
    src\github.com\facchinm\go-serial-native\windows.c:199:22: error: invalid type argument of '->' (have 'int')
        connection_info_ex->ConnectionIndex = connection_info->ConnectionIndex;
                          ^
    src\github.com\facchinm\go-serial-native\windows.c:200:22: error: invalid type argument of '->' (have 'int')
        connection_info_ex->DeviceDescriptor = connection_info->DeviceDescriptor;
                          ^
    src\github.com\facchinm\go-serial-native\windows.c:201:22: error: invalid type argument of '->' (have 'int')
        connection_info_ex->DeviceIsHub = connection_info->DeviceIsHub;
                          ^
    src\github.com\facchinm\go-serial-native\windows.c:202:22: error: invalid type argument of '->' (have 'int')
        connection_info_ex->DeviceAddress = connection_info->DeviceAddress;
                          ^
    src\github.com\facchinm\go-serial-native\windows.c:206:25: error: invalid type argument of '->' (have 'int')
       if (connection_info_ex->DeviceIsHub) {
                             ^
    src\github.com\facchinm\go-serial-native\windows.c:211:45: error: invalid type argument of '->' (have 'int')
                  parent_path, connection_info_ex->ConnectionIndex);
                                                 ^
    src\github.com\facchinm\go-serial-native\windows.c:214:9: warning: passing argument 1 of 'free' makes pointer from integer without a cast [-Wint-conversion]
        free(connection_info_ex);
             ^
    In file included from c:/TDM-GCC-32/include/objbase.h:12:0,
                     from c:/TDM-GCC-32/include/ole2.h:9,
                     from c:/TDM-GCC-32/include/windows.h:114,
                     from src\github.com\facchinm\go-serial-native\libserialport.h:89,
                     from src\github.com\facchinm\go-serial-native\windows.c:23:
    c:/TDM-GCC-32/include/stdlib.h:358:38: note: expected 'void *' but argument is of type 'int'
     _CRTIMP void __cdecl __MINGW_NOTHROW free (void*);
                                          ^
    src\github.com\facchinm\go-serial-native\windows.c:217:44: error: invalid type argument of '->' (have 'int')
                 parent_path, connection_info_ex->ConnectionIndex);
                                                ^
    src\github.com\facchinm\go-serial-native\windows.c:221:10: warning: passing argument 1 of 'free' makes pointer from integer without a cast [-Wint-conversion]
         free(connection_info_ex);
              ^
    In file included from c:/TDM-GCC-32/include/objbase.h:12:0,
                     from c:/TDM-GCC-32/include/ole2.h:9,
                     from c:/TDM-GCC-32/include/windows.h:114,
                     from src\github.com\facchinm\go-serial-native\libserialport.h:89,
                     from src\github.com\facchinm\go-serial-native\windows.c:23:
    c:/TDM-GCC-32/include/stdlib.h:358:38: note: expected 'void *' but argument is of type 'int'
     _CRTIMP void __cdecl __MINGW_NOTHROW free (void*);
                                          ^
    src\github.com\facchinm\go-serial-native\windows.c:226:42: error: invalid type argument of '->' (have 'int')
        port->usb_address = connection_info_ex->DeviceAddress + 1;
                                              ^
    src\github.com\facchinm\go-serial-native\windows.c:227:38: error: invalid type argument of '->' (have 'int')
        port->usb_vid = connection_info_ex->DeviceDescriptor.idVendor;
                                          ^
    src\github.com\facchinm\go-serial-native\windows.c:228:38: error: invalid type argument of '->' (have 'int')
        port->usb_pid = connection_info_ex->DeviceDescriptor.idProduct;
                                          ^
    src\github.com\facchinm\go-serial-native\windows.c:230:26: error: invalid type argument of '->' (have 'int')
        if (connection_info_ex->DeviceDescriptor.iManufacturer)
                              ^
    src\github.com\facchinm\go-serial-native\windows.c:232:34: error: invalid type argument of '->' (have 'int')
                    connection_info_ex->DeviceDescriptor.iManufacturer);
                                      ^
    src\github.com\facchinm\go-serial-native\windows.c:233:26: error: invalid type argument of '->' (have 'int')
        if (connection_info_ex->DeviceDescriptor.iProduct)
                              ^
    src\github.com\facchinm\go-serial-native\windows.c:235:34: error: invalid type argument of '->' (have 'int')
                    connection_info_ex->DeviceDescriptor.iProduct);
                                      ^
    src\github.com\facchinm\go-serial-native\windows.c:236:26: error: invalid type argument of '->' (have 'int')
        if (connection_info_ex->DeviceDescriptor.iSerialNumber) {
                              ^
    src\github.com\facchinm\go-serial-native\windows.c:238:34: error: invalid type argument of '->' (have 'int')
                    connection_info_ex->DeviceDescriptor.iSerialNumber);
                                      ^
    src\github.com\facchinm\go-serial-native\windows.c:249:9: warning: passing argument 1 of 'free' makes pointer from integer without a cast [-Wint-conversion]
        free(connection_info_ex);
             ^
    In file included from c:/TDM-GCC-32/include/objbase.h:12:0,
                     from c:/TDM-GCC-32/include/ole2.h:9,
                     from c:/TDM-GCC-32/include/windows.h:114,
                     from src\github.com\facchinm\go-serial-native\libserialport.h:89,
                     from src\github.com\facchinm\go-serial-native\windows.c:23:
    c:/TDM-GCC-32/include/stdlib.h:358:38: note: expected 'void *' but argument is of type 'int'
     _CRTIMP void __cdecl __MINGW_NOTHROW free (void*);
                                          ^
    src\github.com\facchinm\go-serial-native\windows.c: In function 'get_port_details':
    src\github.com\facchinm\go-serial-native\windows.c:409:16: warning: implicit declaration of function 'CM_Get_DevNode_Registry_PropertyA' [-Wimplicit-function-declaration]
              (cr = CM_Get_DevNode_Registry_PropertyA(dev_inst,
                    ^
    src\github.com\facchinm\go-serial-native\windows.c:410:20: error: 'CM_DRP_CLASS' undeclared (first use in this function)
                        CM_DRP_CLASS, 0, class, &size, 0)) != CR_SUCCESS) { }
                        ^
    src\github.com\facchinm\go-serial-native\windows.c:420:13: error: 'CM_DRP_FRIENDLYNAME' undeclared (first use in this function)
                 CM_DRP_FRIENDLYNAME, 0, description, &size, 0)) != CR_SUCCESS
                 ^
    src\github.com\facchinm\go-serial-native\windows.c:445:43: error: 'CM_DRP_COMPATIBLEIDS' undeclared (first use in this function)
                                               CM_DRP_COMPATIBLEIDS, 0,
                                               ^
    src\github.com\facchinm\go-serial-native\windows.c:464:53: error: 'CM_DRP_ADDRESS' undeclared (first use in this function)
         if (CM_Get_DevNode_Registry_PropertyA(dev_inst, CM_DRP_ADDRESS,
                                                         ^
    make: *** [esp.rubetek.exe] Error 2
    
    opened by Zensey 2
  • SP_ERR_SUP just trying to open port on MacOS 10.10

    SP_ERR_SUP just trying to open port on MacOS 10.10

    Given the following simple example of attempting to write to an Arduino Uno:

        serial.SetDebug(true)
        options := serial.RawOptions
        options.Parity = serial.PARITY_EVEN
    
        port, err := options.Open("dev/cu.usbmodem14131")
        if err != nil {
            fmt.Println(err)
        }
    

    I get the following output:

    sp_set_debug_handler returning.
    sp_get_port_by_name(/dev/cu.usbmodem14131, 0xc20801d5d8) called.
    Building structure for port /dev/cu.usbmodem14131.
    Getting serial port list.
    Iterating over results.
    Found port /dev/cu.usbmodem14131.
    Found USB class device.
    Found description Arduino Uno.
    Found matching USB bus:address 010:007.
    Found matching USB vid:pid 2341:0001.
    Found manufacturer Arduino (www.arduino.cc).
    Found product name Arduino Uno.
    Found serial number 649383233313513141E1.
    get_port_details returning SP_OK.
    sp_get_port_by_name returning SP_OK.
    sp_copy_port(0x4600020, 0xc208040190) called.
    Copying port structure.
    sp_get_port_by_name(/dev/cu.usbmodem14131, 0xc208040190) called.
    Building structure for port /dev/cu.usbmodem14131.
    Getting serial port list.
    Iterating over results.
    Found port /dev/cu.usbmodem14131.
    Found USB class device.
    Found description Arduino Uno.
    Found matching USB bus:address 010:007.
    Found matching USB vid:pid 2341:0001.
    Found manufacturer Arduino (www.arduino.cc).
    Found product name Arduino Uno.
    Found serial number 649383233313513141E1.
    get_port_details returning SP_OK.
    sp_get_port_by_name returning SP_OK.
    sp_copy_port returning 0.
    sp_open(0x4600120, 0x1) called.
    Opening port /dev/cu.usbmodem14131.
    get_config(0x4600120, 0x7fff5fbff7b0, 0x7fff5fbff788) called.
    Getting configuration for port /dev/cu.usbmodem14131.
    get_config returning SP_OK.
    set_config(0x4600120, 0x7fff5fbff7b0, 0x7fff5fbff788) called.
    Setting configuration for port /dev/cu.usbmodem14131.
    set_config returning SP_OK.
    sp_open returning SP_OK.
    sp_new_config(0xc2080401a0) called.
    sp_new_config returning SP_OK.
    sp_get_config(0x4600120, 0x4700000) called.
    get_config(0x4600120, 0x7fff5fbff7b8, 0x4700000) called.
    Getting configuration for port /dev/cu.usbmodem14131.
    get_config returning SP_OK.
    sp_get_config returning SP_OK.
    sp_new_config(0xc20801d5d0) called.
    sp_new_config returning SP_OK.
    sp_set_config_bits(0x4700030, 8) called.
    sp_set_config_bits returning SP_OK.
    sp_set_config_stopbits(0x4700030, 1) called.
    sp_set_config_stopbits returning SP_OK.
    sp_set_config_parity(0x4700030, 2) called.
    sp_set_config_parity returning SP_OK.
    sp_set_config_flowcontrol returning SP_OK.
    sp_set_config(0x4600120, 0x4700030) called.
    get_config(0x4600120, 0x7fff5fbff7b8, 0x7fff5fbff790) called.
    Getting configuration for port /dev/cu.usbmodem14131.
    get_config returning SP_OK.
    set_config(0x4600120, 0x7fff5fbff7b8, 0x4700030) called.
    Setting configuration for port /dev/cu.usbmodem14131.
    set_config returning SP_ERR_SUPP: RTS & CTS flow control must be disabled together.
    sp_set_config returning SP_ERR_SUPP.
    sp_free_config(0x4700030) called.
    sp_free_config returning.
    sp_close(0x4600120) called.
    Closing port /dev/cu.usbmodem14131.
    sp_close returning SP_OK.
    The requested operation is not supported by this system or device
    

    My goal is to 1) be able to use 9600 8E1 instead of 8N1 (this go program is a simulator for a real world device that's hard to access, and only speak 8E1), and 2) Ideally completely turn off flow control in an effort to stop the Arduino auto-reboot on connect (less important). I took a look at serial.c but couldn't quite figure out how it'd get into that state, since I think it should be using no flow control at all by default.

    opened by jimbojsb 3
Owner
Jacob Michael Lee
Historical profile. Find me at @jakelee8
Jacob Michael Lee
A Go package to allow you to read and write from the serial port as a stream of bytes.

Serial A Go package to allow you to read and write from the serial port as a stream of bytes. Details It aims to have the same API on all platforms, i

null 1.4k Sep 22, 2022
A ocilloscope writen in GO. Supported serial input, portaudio input.

A ocilloscope writen in GO. Supported serial input, portaudio input.

John_Suu 1 Oct 23, 2021
Arduino pluggable discovery for serial ports

Arduino pluggable discovery for serial ports The quarto-discovery tool is a command line program that interacts via stdio. It accepts commands as plai

qNimble 0 Oct 29, 2021
Go library for generate serial numbers according to rules.

go-sn - Serial Number Generator Go library for generate serial numbers according to rules. This library is also useful for generating serial numbers i

Kenkyu 7 Sep 8, 2022
Serial to Keyboard converter for Polar's card readers

polar-serial-to-keyboard Serial to Keyboard converter for Polar's card readers Configuration This program is intended to be run as a background proces

null 0 Dec 17, 2021
Quick and dirty demo of cobra functionality

Cobra Demo Purpose Testing out how cobra CLI's are parsed. Overview To use this repo, you can run something like this (from the directory where you cl

Brendon Thiede 1 Sep 26, 2022
Create one endpoint with add user functionality

hubuc-task Create one endpoint with add user functionality

Sachin Chavan 0 Nov 13, 2021
A toy repo used to test the functionality of "go mod why".

Mod Why Test Discussion From a module perspective: The main module (github.com/ejweber/mod-why-test) has a single direct dependency (github.com/ejwebe

Eric Weber 1 Dec 1, 2021
Go binding for libuuid

Pure Go UUID implementation This package provides immutable UUID structs and the functions NewV3, NewV4, NewV5 and Parse() for generating versions 3,

Kris Kovalik 415 Sep 1, 2022
Go port of Coda Hale's Metrics library

go-metrics Go port of Coda Hale's Metrics library: https://github.com/dropwizard/metrics. Documentation: http://godoc.org/github.com/rcrowley/go-metri

Richard Crowley 3.3k Sep 23, 2022
Lima launches Linux virtual machines on macOS, with automatic file sharing, port forwarding, and containerd.

Lima: Linux-on-Mac ("macOS subsystem for Linux", "containerd for Mac")

Akihiro Suda 9.3k Sep 27, 2022
Entitas-Go is a fast Entity Component System Framework (ECS) Go 1.17 port of Entitas v1.13.0 for C# and Unity.

Entitas-Go Entitas-GO is a fast Entity Component System Framework (ECS) Go 1.17 port of Entitas v1.13.0 for C# and Unity. Code Generator Install the l

Vladislav Fedotov 19 Aug 15, 2022
Minecraft Port Knock With Golang

Minecraft Port Knock A simple program that performs two duties: Monitor a Minecraft server and stop it after it has been empty for some amount of time

Daniel Widrick 2 Jan 11, 2022
A utility library to make use of the X Go Binding easier. (Implements EWMH and ICCCM specs, key binding support, etc.)

xgbutil is a utility library designed to work with the X Go Binding. This project's main goal is to make various X related tasks easier. For example,

Andrew Gallant 183 Sep 8, 2022
A utility library to make use of the X Go Binding easier. (Implements EWMH and ICCCM specs, key binding support, etc.)

xgbutil is a utility library designed to work with the X Go Binding. This project's main goal is to make various X related tasks easier. For example,

Andrew Gallant 183 Sep 8, 2022
mass-binding-target is a command line tool for generating binding target list by search plot files from disk.

mass-binding-target mass-binding-target is a command line tool for generating binding target list by search plot files from disk. Build Go 1.13 or new

null 0 Nov 5, 2021
A CLI to execute AT Commands via serial port connections.

AT Command CLI A CLI to execute AT Commands via serial port connections. Development Install Go Run go run main.go

Daniel Khaapamyaki 25 Aug 25, 2022
A simple tool to send binary data over a serial port. Designed for use with my retro computer systems.

Colin's Transfer Tool This is a really basic tool to transfer firmware files to my retro computer systems over a serial port. This removes the need fo

Colin Maykish 0 Dec 21, 2021
Tabouli: a TUI for interacting with firmware/embedded devices that support a CLI via serial interface/virtual COM Port

Tabouli Information Tabouli is a TUI for interacting with firmware/embedded devi

Ovyl 26 Apr 2, 2022
Serial-locate - A simple tool for searching the COM port

serial-locate A simple tool for searching the COM port Usage Direct query serial

Dirk Arnez 0 Jan 18, 2022