我在Linux下使用串口。因为我很少有接口,所以我定义了两种结构:
typedef struct
{
int handle;
unsigned int port;
unsigned short baudRate;
unsigned char parity;
char device[128];
} tS_PORT;
typedef struct
{
unsigned char testSts;
unsigned char testRet;
tS_PORT sPort;
} tR_PORT;
已声明变量R01
tR_PORT R01 = { 5,0 };
如何使用tS_PORT上的指针?
我尝试了以下代码,但没有预期结果。
int test(void)
{
int ret;
ret = sOpen(&R01->sPort);
return 0;
}
static int sOpen(tS_PORT *pPort)
{
pPort->handle = open(pPort->device, O_RDWR | O_NOCTTY);
if(pPort->handle < 0)
{
perror("open:");
return (-1);
}
return (pPort->handle);
}
... few functions
static int sClose(tS_PORT *pPort)
{
return (close(pPort->handle));
}
编辑1:
考虑到Kerrek SB的回应后。它有效,但最后一个函数没有返回预期值。
int test(void)
{
int ret;
int closeRet;
ret = sOpen(&R01.sPort);
printf("ret = %d\n", ret);
closeRet = sClose(&R01.sPort);
printf("closeRet = %d\n", closeRet);
printf("handle = %d\n", R01.sPort.handle);
return 0;
}
static int sOpen(tS_PORT *pPort)
{
pPort->handle = open(pPort->device, O_RDWR | O_NOCTTY);
if(pPort->handle < 0)
{
perror("open:");
return (-1);
}
return (pPort->handle);
}
... few functions
static int sClose(tS_PORT *pPort)
{
return (close(pPort->handle));
}
返回:
ret = 4;
closeRet = 0
handle = 4
为什么句柄不等于0端口总是打开的,不是吗?