我在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); // or ? 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,端口始终打开,不是<?p?
答案 0 :(得分:2)
你想要&R01.sPort
。请注意,R01
不是指针。