5.7.20 • Published 7 months ago

serialconnectioncapacitor v5.7.20

Weekly downloads
-
License
MIT
Repository
github
Last release
7 months ago

SerialConnectionCapacitor

A Capacitor plugin for serial port communication in web and mobile applications.

Installation

npm install serialconnectioncapacitor
npx cap sync
for Android Only , 24 and above, serial port need a rooted android 
capacitor 5.0.1 special version for VMC using polling and timing method
if you need another version please find the versions 
it uses native libs libserial_port.so , I have built for many architures , thanks grok that guided me along!

Android Setup

Add the following permission to your AndroidManifest.xml:

<uses-feature android:name="android.hardware.usb.host" />
<uses-permission android:name="android.permission.USB_PERMISSION" />

Events

The plugin emits the following events:

Event NameDescriptionData Structure
connectionOpenedWhen connection is established{ message: string }
connectionErrorWhen connection fails{ error: string }
nativeWriteSuccessWhen data is written successfully{ message: string }
writeErrorWhen write operation fails{ error: string }
dataReceivedWhen data is received{ data: string }
readErrorWhen read operation fails{ error: string }
readingStoppedWhen reading is stopped{ message: string }
connectionClosedWhen connection is closed{ message: string }

Event Handling Example

import { serialConnectionCapacitor } from 'serialconnectioncapacitor';

// Connection events
serialConnectionCapacitor.addEvent('connectionOpened', (event) => {
  console.log('Connection established:', event.message);
});

// Data events
serialConnectionCapacitor.addEvent('dataReceived', (event) => {
  console.log('Received data:', event.data);
});

// Error handling
serialConnectionCapacitor.addEvent('readError', (event) => {
  console.error('Read error:', event.error);
});

serialConnectionCapacitor.addEvent('connectionError', (event) => {
  console.error('Connection error:', event.error);
});

// Cleanup
serialConnectionCapacitor.addEvent('connectionClosed', (event) => {
  console.log('Connection closed:', event.message);
});

API

Plugin interface for serial port communication.

listPorts()

listPorts() => Promise<SerialPortListResult>

Lists available serial ports.

Returns: Promise<SerialPortListResult>


openSerial(...)

openSerial(options: SerialPortOptions) => Promise<any>

Opens a serial port connection.

ParamTypeDescription
optionsSerialPortOptionsConnection options including port path and baud rate.

Returns: Promise<any>


openUsbSerial(...)

openUsbSerial(options: SerialPortOptions) => Promise<any>

Opens a USB serial port connection.

ParamTypeDescription
optionsSerialPortOptionsConnection options including port path and baud rate.

Returns: Promise<any>


write(...)

write(options: SerialPortWriteOptions) => Promise<any>

Writes data to the serial port.

ParamTypeDescription
optionsSerialPortWriteOptionsWrite options containing the command to send.

Returns: Promise<any>


writeVMC(...)

writeVMC(options: SerialPortWriteOptions) => Promise<any>

Writes data to the serial port.

ParamTypeDescription
optionsSerialPortWriteOptionsWrite options containing the command to send.

Returns: Promise<any>


startReading()

startReading() => Promise<any>

Start reading data from the serial port.

Returns: Promise<any>


startReadingVMC()

startReadingVMC() => Promise<any>

Start reading data from the serial port.

Returns: Promise<any>


stopReading()

stopReading() => Promise<any>

Stop reading data from the serial port.

Returns: Promise<any>


close()

close() => Promise<any>

Closes the serial port connection.

Returns: Promise<any>


addListener(SerialPortEventTypes, ...)

addListener(eventName: SerialPortEventTypes, listenerFunc: (...args: any[]) => void) => Promise<PluginListenerHandle> & PluginListenerHandle

Add listener for serial port events

ParamTypeDescription
eventNameSerialPortEventTypesThe event to listen for
listenerFunc(...args: any[]) => voidCallback function when event occurs

Returns: Promise<PluginListenerHandle> & PluginListenerHandle


Interfaces

SerialPortListResult

Result of listing available serial ports.

PropTypeDescription
ports{ key: string: number; }Available serial ports.

SerialPortOptions

Options for opening a serial port connection.

PropTypeDescription
portNamestringPath to the serial port (e.g., /dev/ttyUSB0 or COM3).
baudRatenumberBaud rate for the serial port connection.
dataBitsnumber
stopBitsnumber
paritystring
bufferSizenumber
flagsnumber

SerialPortWriteOptions

Options for writing to a serial port.

PropTypeDescription
datastringCommand to send to the serial port (hex string or text).

PluginListenerHandle

PropType
remove() => Promise<void>

Type Aliases

SerialPortEventTypes

'portsListed' | 'serialOpened' | 'usbSerialOpened' | 'connectionClosed' | 'usbWriteSuccess' | 'dataReceived' | 'readingStarted' | 'readingStopped' | 'serialWriteSuccess' | 'commandAcknowledged' | 'commandQueued'

Example Usage

import { serialConnectionCapacitor } from 'serialconnectioncapacitor';

class SerialPortManager {
  private isReading = false;

  async initialize() {
    try {
      const { ports } = await serialConnectionCapacitor.listPorts();
      if (Object.keys(ports).length === 0) {
        throw new Error('No serial ports available');
      }

      const portName = Object.keys(ports)[0];
      await serialConnectionCapacitor.open({
        portName,
        baudRate: 115200
      });

      this.setupEvents();
      return true;
    } catch (error) {
      console.error('Initialization failed:', error);
      return false;
    }
  }

  private setupEvents() {
    // Connection events
    serialConnectionCapacitor.addEvent('connectionOpened', (event) => {
      console.log('Connected:', event.message);
    });

    serialConnectionCapacitor.addEvent('connectionClosed', (event) => {
      console.log('Disconnected:', event.message);
    });

    // Data events
    serialConnectionCapacitor.addEvent('dataReceived', (event) => {
      console.log('Received:', event.data);
    });

    serialConnectionCapacitor.addEvent('nativeWriteSuccess', (event) => {
      console.log('Write successful:', event.message);
    });

    // Error events
    serialConnectionCapacitor.addEvent('readError', (event) => {
      console.error('Read error:', event.error);
    });

    serialConnectionCapacitor.addEvent('connectionError', (event) => {
      console.error('Connection error:', event.error);
    });
  }

  async startReading() {
    if (!this.isReading) {
      await serialConnectionCapacitor.startReading();
      this.isReading = true;
    }
  }

  async stopReading() {
    if (this.isReading) {
      await serialConnectionCapacitor.stopReading();
      this.isReading = false;
    }
  }

  async sendCommand(command: string) {
    await serialConnectionCapacitor.write({ command });
  }

  async cleanup() {
    await this.stopReading();
    await serialConnectionCapacitor.close();
  }
}

// Usage
const serialManager = new SerialPortManager();
await serialManager.initialize();
await serialManager.startReading();
await serialManager.sendCommand('TEST');
// ... later
await serialManager.cleanup();

License

MIT

5.7.20

7 months ago

5.7.18

7 months ago

5.7.17

7 months ago

5.7.16

7 months ago

5.7.15

7 months ago

5.7.14

7 months ago

5.7.13

7 months ago

5.7.12

7 months ago

5.7.11

7 months ago

5.7.10

7 months ago

5.7.8

7 months ago

5.7.7

7 months ago

5.7.6

7 months ago

5.7.5

7 months ago

5.7.4

7 months ago

5.7.2

7 months ago

5.7.1

7 months ago

5.7.0

7 months ago

0.0.107

7 months ago

0.0.106

7 months ago

0.0.105

7 months ago

0.0.104

7 months ago

0.0.103

7 months ago

0.0.102

7 months ago

0.0.101

7 months ago

0.0.100

7 months ago

0.0.99

7 months ago

0.0.98

7 months ago

0.0.97

7 months ago

0.0.96

7 months ago

0.0.95

7 months ago

0.0.94

7 months ago

0.0.93

7 months ago

0.0.92

7 months ago

0.0.91

7 months ago

0.0.90

7 months ago

0.0.89

7 months ago

0.0.88

7 months ago

0.0.87

7 months ago

0.0.86

7 months ago

0.0.85

7 months ago

0.0.84

7 months ago

0.0.83

7 months ago

0.0.82

7 months ago

0.0.81

7 months ago

0.0.80

7 months ago

0.0.79

7 months ago

0.0.78

7 months ago

0.0.77

7 months ago

0.0.76

7 months ago

0.0.75

7 months ago

0.0.74

7 months ago

0.0.73

7 months ago

0.0.72

7 months ago

0.0.71

7 months ago

0.0.70

7 months ago

0.0.69

7 months ago

0.0.67

7 months ago

0.0.66

7 months ago

0.0.65

7 months ago

0.0.64

7 months ago

0.0.63

7 months ago

0.0.62

7 months ago

0.0.61

7 months ago

0.0.60

7 months ago

0.0.58

7 months ago

0.0.57

7 months ago

0.0.56

7 months ago

0.0.55

7 months ago

0.0.52

7 months ago

0.0.51

7 months ago

0.0.50

7 months ago

0.0.49

7 months ago

0.0.48

7 months ago

0.0.47

7 months ago

0.0.46

7 months ago

0.0.45

7 months ago

0.0.44

7 months ago

0.0.43

7 months ago

0.0.42

7 months ago

0.0.41

7 months ago

0.0.39

7 months ago

0.0.38

7 months ago

0.0.37

7 months ago

0.0.36

7 months ago

0.0.35

7 months ago

0.0.34

7 months ago

0.0.33

7 months ago

0.0.31

7 months ago

0.0.30

7 months ago

0.0.29

7 months ago

0.0.27

7 months ago

0.0.25

7 months ago

0.0.24

7 months ago

0.0.23

8 months ago

0.0.22

8 months ago

0.0.21

8 months ago

0.0.20

8 months ago

0.0.19

8 months ago

0.0.18

8 months ago

0.0.16

8 months ago

0.0.15

8 months ago

0.0.14

8 months ago

0.0.13

8 months ago

0.0.12

8 months ago

0.0.11

8 months ago

0.0.10

8 months ago

0.0.8

8 months ago

0.0.7

8 months ago

0.0.6

8 months ago

0.0.4

8 months ago

0.0.3

8 months ago

0.0.2

8 months ago

0.0.1

8 months ago