To learn how to use node-serialport, I need to prepare an easy-to-verify development environment. So, I select VirtualBox + Vagrant + virtual serial port to setup the development environment. The article is to summarize how I setup step-by-step.
Before setup, following softwares need to be installed:
Note, it's very easy to install
socat with homebrew:
I select precise64 as the basebox, and initiate the virtualbox:
Next step is to add following lines into the
Vagrantfile file at current path:
The 1st line of
modifyvm is to enable virtual serial port in virtualbox.
The 2nd line of
modifyvm is to connect the virtual serial port to a software pipe on host OS (Mac). In this case, the local domain socket (
/tmp/my_tty) is used.
Then, launch the box
Note, the first line is to make sure the socket file already exists before the virtual machine is started. The third line is to login the guest OS for manipulating virtual serial port.
VMWare Fusion Setup
Test with SocketServer on Host OS
At the Guest OS (Ubuntu 12.04 64 bits), the virtual serial port can be found at
/dev/ttyS0. Then, we use
screen tool to manipulate the serial port. Let's open a terminal, name it as T1, and type following command:
At the Host OS (Mac OSX), the file for local domain socket connected by virtual serial port is
/tmp/my_tty. To monitor the domain socket,
socat tool is used. Let's open another terminal, name it as T2, and type following command:
Then, when you type some characters on T1 then T2 shows those characters, and vice versa.
At T1, to exit from
screen, please press
ctrl-a k to kill it.
At T2, after the
telnet process is killed, the
socat process is also terminated.
Test with Virtual SerialPort on Host OS
The steps are similar to previous section, but the steps for T2 (2nd terminal) are different. Let's type
socat -d -d /tmp/my_tty PTY. It might output following messages on the terminal:
socat indicates the named pipe for virtual serial port on host OS is created, and placed at
/dev/ttys001. Then, type
screen /dev/ttys001 38400. Finally, the virtual serial ports on both Guest and Host OSes are connected.