0

Basically, how would one take this code (written for a parallel port) and change it to make it work with a serial port?

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/io.h>

#define base 0x378           /* /dev/lp0 */

main(int argc, char **argv) {                    
	int value;

	if (argc!=2)
		printf("Enter a number between 0 and 255.\n"), exit(1);

	if (sscanf(argv[1],"%i",&value)!=1)
		printf("Parameter is not a number.\n"), exit(1);

	if ((value<0) || (value>255))
		printf("Enter a number between 0 and 255.\n"), exit(1);

	if (ioperm(base,1,1))
		perror("ioperm");

	printf("Setting base %x to value %d\n", base, value);

	outb((unsigned char)value, base);
}

Small project I'm working on and I don't want to ruin any hardware. I know they have different numbers of pins and I'm not sure how to adjust it to run with a serial port.

2
Contributors
3
Replies
4
Views
5 Years
Discussion Span
Last Post by nezachem
0

You seem to be working with linux. If so, the best way is to avoid outb() and friends. Open /dev/ttyS0, and write to it just like to a regular file. Do not forget to configure the protocol (baud rate, parity, stop bits, etc) with tcsetattr.

See details here.

0

You seem to be working with linux. If so, the best way is to avoid outb() and friends. Open /dev/ttyS0, and write to it just like to a regular file. Do not forget to configure the protocol (baud rate, parity, stop bits, etc) with tcsetattr.

See details here.

Ugh. I found the code online because I didn't know how to write it myself. I'm working with Windows (VS 2010), not Linux. I'm sure that changes things entirely. Back to researching I suppose...

0

I'm sure that changes things entirely.

Not really. A filename surely changes (from /dev/ttyS0 to COM1), and open() becames CreateFile(). Instead of tcsetattr there is IOCTL_SERIAL_SET_DCB.

If worst comes to worst, there's always an SFU; more or less supported.

This topic has been dead for over six months. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.