51 #include <sys/termios.h> 52 #include <iothinx/iothinxio.h> 54 #define SERIAL_BAUDRATE_300 B300 55 #define SERIAL_BAUDRATE_600 B600 56 #define SERIAL_BAUDRATE_1200 B1200 57 #define SERIAL_BAUDRATE_1800 B1800 58 #define SERIAL_BAUDRATE_2400 B2400 59 #define SERIAL_BAUDRATE_4800 B4800 60 #define SERIAL_BAUDRATE_9600 B9600 61 #define SERIAL_BAUDRATE_19200 B19200 62 #define SERIAL_BAUDRATE_38400 B38400 63 #define SERIAL_BAUDRATE_57600 B57600 64 #define SERIAL_BAUDRATE_115200 B115200 66 #define SERIAL_FLOW_CONTROL_NO 71 #define SERIAL_PARITY_NONE 76 #define SERIAL_DATA_BITS_8 78 #define SERIAL_STOP_BIT_1 82 int main(
int argc,
char **
const argv)
93 uint32_t module_count;
99 printf(
"Error:ioThinx_Serial_SetInterface() = %d\n", rc);
103 printf(
"total slot = %lu\n", module_count);
105 while (-1 != (rc = getopt(argc, argv,
"i:p:s:h")))
110 interface = atoi(optarg);
120 printf(
"Serial sample program.\n\n");
121 printf(
"Usage: ./serial [OPTIONS]\n\n");
122 printf(
"Options:\n");
123 printf(
"\t%-8s Interface. Default interface = %d\n",
"-i", interface);
124 printf(
"\t%-8s Port. Default port = %d\n",
"-p", port);
125 printf(
"\t%-8s Slot. Default slot = %d\n",
"-s", slot);
135 printf(
"Error:ioThinx_Serial_SetInterface() = %d\n", rc);
143 printf(
"Error:ioThinx_Serial_GetInterface() = %d\n", rc);
147 printf(
"port = %lu\n", port);
148 printf(
"slot = %lu\n", slot);
149 printf(
"interface = %lu\n", interface);
154 printf(
"Error:ioThinx_Serial_GetDevName() = %d\n", rc);
158 printf(
"devname = %s\n", devname);
159 fd = open(devname, O_RDWR);
163 printf(
"Error:open = %d\n", rc);
167 rc = tcgetattr(fd, &tio);
171 printf(
"Error:tcgetattr = %d\n", rc);
176 tio.c_cflag &= ~CBAUD;
180 #if defined(SERIAL_FLOW_CONTROL_NO) 181 tio.c_cflag &= ~CRTSCTS;
182 tio.c_iflag &= ~(IXON | IXOFF);
183 #elif defined(SERIAL_FLOW_CONTROL_HW) 184 tio.c_cflag |= CRTSCTS;
185 tio.c_iflag &= ~(IXON | IXOFF);
186 #elif defined(SERIAL_FLOW_CONTROL_SW) 187 tio.c_cflag &= ~CRTSCTS;
188 tio.c_iflag |= (IXON | IXOFF);
189 #elif defined(SERIAL_FLOW_CONTROL_BOTH) 190 tio.c_cflag |= CRTSCTS;
191 tio.c_iflag |= (IXON | IXOFF);
193 printf(
"No definition of flow control\n");
198 #if defined(SERIAL_PARITY_NONE) 199 tio.c_cflag &= ~PARENB;
200 tio.c_iflag &= ~INPCK;
201 #elif defined(SERIAL_PARITY_ODD) 202 tio.c_cflag |= PARENB;
203 tio.c_cflag |= PARODD;
204 tio.c_iflag |= INPCK;
205 #elif defined(SERIAL_PARITY_EVEN) 206 tio.c_cflag |= PARENB;
207 tio.c_cflag &= ~PARODD;
208 tio.c_iflag |= INPCK;
210 printf(
"No definition of parity\n");
215 #if defined(SERIAL_DATA_BITS_7) 216 tio.c_cflag &= ~CSIZE;
218 #elif defined(SERIAL_DATA_BITS_8) 219 tio.c_cflag &= ~CSIZE;
222 printf(
"No definition of data bits\n");
227 #if defined(SERIAL_STOP_BIT_1) 228 tio.c_cflag &= ~CSTOPB;
229 #elif defined(SERIAL_STOP_BIT_2) 230 tio.c_cflag |= CSTOPB;
232 printf(
"No definition of stop bit\n");
236 rc = tcsetattr(fd, TCSANOW, &tio);
240 printf(
"Error:tcsetattr = %d\n", rc);
244 printf(
"Start Serial echo.\n");
252 rc = write(fd, buf, rc);
253 if (strncmp(buf,
"quit", 4) == 0)
260 printf(
"Stop Serial echo.\n");
261 tcflush(fd, TCIOFLUSH);
int main(int argc, char **const argv)
IOTHINX_ERR ioThinx_Misc_GetModuleCountML(uint32_t *p_module_count)
#define SERIAL_INTERFACE_RS232
IOTHINX_ERR ioThinx_Serial_SetInterface(uint32_t slot, uint32_t port, uint32_t interface)
IOTHINX_ERR ioThinx_Serial_GetInterface(uint32_t slot, uint32_t port, uint32_t *interface)
IOTHINX_ERR ioThinx_Serial_GetDevName(uint32_t slot, uint32_t port, uint8_t *name)
#define SERIAL_BAUDRATE_115200