Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Operation not supported, cannot set #2777

Open
fromage9747 opened this issue Apr 14, 2024 · 1 comment
Open

Operation not supported, cannot set #2777

fromage9747 opened this issue Apr 14, 2024 · 1 comment

Comments

@fromage9747
Copy link

SerialPort Version

^12.0.0"

Node Version

v16.20.2

Electron Version

Nestjs v10.3.2

Platform

Linux debian 6.1.0-18-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.76-1 (2024-02-01) x86_64 GNU/Linux

Architecture

x64

Hardware or chipset of serialport

USB-Enhanced-SERIAL CH343

What steps will reproduce the bug?

const serialport = new SerialPort(path)

serialport.on('open', function() {
    serialport.set({ dtr: true, rts: true });
}

What happens?

Cannot set { dtr: true, rts: true }. Receive an error output of Operation not supported, cannot set

What should have happened?

Successfully setting of { dtr: true, rts: true }

Additional information

I have read through other GitHub posts relating to this and also installed the latest version of bindings as the previous posts were relating to v9 of the serial port.

What led me onto this is https://stackoverflow.com/questions/67905013/node-serialport-not-receiving-data

I am not receiving data from my serial device. I can send data to the device and can physically see the actions being performed that have been programmed for the serial device, but I do not receive any output in the serial.on('data) hence why It led me to the above link.

Now I am trying to set { dtr: true, rts: true } in the hopes of receiving data but only receive Operation not supported, cannot set

@serg3295
Copy link

I can confirm this issue on Linux Lenovo 6.8.0-51-generic #52-Ubuntu SMP PREEMPT_DYNAMIC Thu Dec 5 13:09:44 UTC 2024 x86_64 x86_64 x86_64 GNU/Linux

The behavior is exactly the same as described in the "additional information" section in the previous message.

I would like to clarify that it is not possible to execute the port.set() command only for the /dev/ttyACM* port.
If the port is /dev/ttyUSB*, then the port.set() command is executed successfully.

Connection log on Linux
❯ npx @serialport/list
/dev/ttyUSB0    usb-1a86_USB2.0-Serial-if00-port0       1a86
/dev/ttyACM0    usb-Espressif_ESP32-S2_48:27:e2:5e:34:bc-if00   Espressif

❯ DEBUG=serialport*  npx @serialport/repl /dev/ttyACM0 115200
serialport/bindings-cpp loading LinuxBinding +0ms
DEBUG=serialport* # enable debugging with DEBUG=serialport*
port = SerialPort({ path: "/dev/ttyACM0", baudRate: 115200, autoOpen: false })
globals { SerialPort, SerialPortMock, path, port }
> port.open()
serialport/stream opening path: /dev/ttyACM0 +0ms
serialport/bindings-cpp open +0ms
undefined
>   serialport/bindings-cpp/poller Creating poller +0ms
serialport/stream opened path: /dev/ttyACM0 +3ms

undefined
> port.set({dtr:true,rts:true})
serialport/stream #set { brk: false, cts: false, dtr: true, rts: true } +26s
serialport/bindings-cpp set +26s
undefined
>   serialport/stream binding.set had an error [Error: Error: Operation not supported, cannot set] +3ms
Uncaught Error: Error: Operation not supported, cannot set
> port.close()
serialport/stream #close +12s
serialport/bindings-cpp close +12s
serialport/bindings-cpp/poller Stopping poller +37s
serialport/bindings-cpp/poller Destroying poller +1ms
undefined
>   serialport/stream binding.close finished +5ms

(To exit, press Ctrl+C again or Ctrl+D or type .exit)
> 
❯ DEBUG=serialport*  npx @serialport/repl /dev/ttyUSB0 115200
serialport/bindings-cpp loading LinuxBinding +0ms
DEBUG=serialport* # enable debugging with DEBUG=serialport*
port = SerialPort({ path: "/dev/ttyUSB0", baudRate: 115200, autoOpen: false })
globals { SerialPort, SerialPortMock, path, port }
> port.open()
serialport/stream opening path: /dev/ttyUSB0 +0ms
serialport/bindings-cpp open +0ms
undefined
>   serialport/bindings-cpp/poller Creating poller +0ms
serialport/stream opened path: /dev/ttyUSB0 +3ms
> port.set({dtr:true,rts:true})
serialport/stream #set { brk: false, cts: false, dtr: true, rts: true } +24s
serialport/bindings-cpp set +24s
undefined
>   serialport/stream binding.set finished +2ms

undefined
> port.close()
serialport/stream #close +8s
serialport/bindings-cpp close +8s
serialport/bindings-cpp/poller Stopping poller +32s
serialport/bindings-cpp/poller Destroying poller +0ms
undefined
>   serialport/stream binding.close finished +9ms

On Windows 10, the port.set() command runs successfully for the same devices that were tested on Linux (COM* both USB and ACM type).

Connection log on Win10
PS C:\Temp> serialport-list
COM12   USB\VID_303A&PID_0002&MI_00\6&11E9546E&0&0000   Корпорация Майкрософт
COM14   USB\VID_1A86&PID_7523\6&1BCB92EB&0&2    wch.cn
PS C:\Temp>

PS C:\Temp> serialport-repl  COM12  115200
DEBUG= # enable debugging with DEBUG=serialport*
port = SerialPort({ path: "COM12", baudRate: 115200, autoOpen: false })
globals { SerialPort, SerialPortMock, path, port }
> port.open()
undefined
> port.set({dtr:true,rts:true})
undefined

PS C:\Temp> serialport-repl  COM14  115200
DEBUG= # enable debugging with DEBUG=serialport*
port = SerialPort({ path: "COM14", baudRate: 115200, autoOpen: false })
globals { SerialPort, SerialPortMock, path, port }
> port.open()
undefined
> port.set({dtr:true,rts:true})
undefined
>

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Development

No branches or pull requests

2 participants