【发布时间】:2021-02-11 14:27:16
【问题描述】:
我对以下代码有疑问。我认为这是一个指针问题,但我不知道如何解决它。
我想从 main 调用 SIM7070_Start 函数。该函数调用SIM7070_SendCommand,然后出现错误。 和 WiringPi 的 'serial' 变量有关吗?
请帮忙
#include <stdio.h>
#include <string.h>
#include <errno.h>
#include <wiringPi.h>
#include <wiringSerial.h>
const int pwr = 4;
const int dtr = 25;
int SIM7070_PowerOn()
{
printf("SIM7070_PowerOn\n");
pinMode(pwr, OUTPUT);
digitalWrite(pwr, HIGH);
delay(2000);
digitalWrite(pwr, LOW);
delay(2000);
pinMode(dtr, OUTPUT);
digitalWrite(dtr, LOW);
delay(1000);
}
int SIM7070_powerDown(void)
{
printf("SIM7070_PowerDown\n");
digitalWrite(pwr, HIGH);
delay(1000);
digitalWrite(pwr, LOW);
delay(2000);
}
int SIM7070_SendCommand(int serial, char * command, char * expectedResponse)
{
char data;
data = (char *) malloc(sizeof(char));
printf("\nSEND COMMAND IS: %s\n", command);
serialPrintf(serial, command);
delay(200);
while (serialDataAvail(serial)) {
data = serialGetchar(serial);
printf("%s", data);
}
if (strlen(expectedResponse) != 0) {
if (strcmp(data, expectedResponse) <= 0) {
printf("\nSIM7070_SendCommand - The expected response has been found\n");
return 1;
} else {
printf("\nSIM7070_SendCommand - The expected response hasn't been found\n");
return 0;
}
}
}
void SIM7070_Start(int serial)
{
SIM7070_SendCommand(serial, "AT\r\n", "OK");
}
int main()
{
int serial;
char data;
if (wiringPiSetup() < 0)
return 1;
if ((serial = serialOpen("/dev/ttyS0", 57600)) < 0)
return 1;
printf("Serial start ...\n");
SIM7070_PowerOn();
delay(2000);
SIM7070_Start(serial);
delay(5000);
serialClose(serial);
SIM7070_powerDown();
return 0;
}
如果主要是:
int main()
{
int serial;
char data;
if (wiringPiSetup() < 0)
return 1;
if ((serial = serialOpen("/dev/ttyS0", 57600)) < 0)
return 1;
printf("Serial start ...\n");
SIM7070_PowerOn();
delay(2000);
SIM7070_SendCommand(serial, "AT\r\n", "OK");
delay(5000);
serialClose(serial);
SIM7070_powerDown();
return 0;
}
它有效。
【问题讨论】:
-
*data = serialGetchar(serial);但char *data尚未分配值。 -
你好,保罗,我不明白。我该怎么办?
-
data必须指向函数SIM7070_SendCommand中的有效内存 -
为什么是
char *data而不是char data? -
我想将数据与预期响应进行比较。我编辑帖子以显示它。