MES3.0はLinuxの下位互換性であり、MES3.0のユーザープログラムは原則としてLinuxでも同じソースコードで動作します。
以下、MES3.0で動作確認されたLinuxとソースコード互換のシリアルポート通信の例です。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include <termios.h>
#include <unistd.h>
#include <fcntl.h>

int serial_setup(int fd){
	struct termios	term;

	term.c_iflag = 0;
	term.c_oflag = 0;
	term.c_cflag = 0;
	term.c_lflag = 0;
	term.c_line = 0;
	bzero(term.c_cc,sizeof(term.c_cc));
	term.c_cflag = B115200 | CS8 | CLOCAL | CREAD ;
	term.c_iflag = ICRNL;
	term.c_oflag = ONLCR | OCRNL;
	term.c_lflag = ICANON | ECHO;
	tcflush(fd, TCIFLUSH);
	tcsetattr(fd, TCSANOW, &term);
	return 0;
}

int main() {
	FILE	*fp;
	int	i, s;
	char	*inbuf, *cmdbuf;

	cmdbuf = malloc(256);
	fp = fopen("com3", "r+");
	serial_setup(fileno(fp));
	fprintf(fp, "[Command System]\n");
	do {
		fgets(cmdbuf, 255, fp);
		for(i = s = 0;cmdbuf[i] != 0 && cmdbuf[i] != '\n' && cmdbuf[i] != '\r';i++) {
			if(isprint(cmdbuf[i])) cmdbuf[s++] = cmdbuf[i];
			else if(cmdbuf[i] == 8 && s > 0) s--;
			else if(cmdbuf[i] == 9) cmdbuf[s++] = ' ';
			else if(cmdbuf[i] == 0x1b) {
				if(cmdbuf[i + 1] == 0x5b && cmdbuf[i + 2] == 0x44 && s > 0) s--;
				i += 2;
			}
		}
		cmdbuf[s] = 0;
		puts(cmdbuf);
	} while(strcmp(cmdbuf, "quit") != 0);
	fprintf(fp, "[END]\n");
	fclose(fp);
	free(inbuf);

	return  0;
}