Dear All,
I’m having a weird problem with my adh8066 module.
I’m trying to send a simple sms message, this is a code snippet:
   int size =0;
	char at_command[] = "AT\r\n";
	char set_text_mode[] = "AT+CMGF=1\r\n";
	char set_receiving_number[] = "AT+CMGS=\"00201285308016\"\r\n";
	char message_body[] = "Hello from OK6410\x1A";
	tcflush(fd, TCIOFLUSH);
	write(fd,at_command,sizeof(at_command));
	char ptr0[20];
	size = read(fd,ptr0,20);
	ptr0[size]='\0';
	printf("%s\n",ptr0);
	tcflush(fd, TCIOFLUSH);
	write(fd,set_text_mode,sizeof(set_text_mode));
	char ptr1[20];
	size = read(fd,ptr1,20);
	ptr1[size]='\0';
	printf("%s\n",ptr1);
	tcflush(fd, TCIOFLUSH);
	write(fd,set_receiving_number,sizeof(set_receiving_number));
	char ptr2[20];
	size = read(fd,ptr2,20);
	ptr2[size]='\0';
	printf("%s\n",ptr2);
	tcflush(fd, TCIOFLUSH);
	write(fd,message_body,sizeof(message_body));
	char ptr3[20];
	size = read(fd,ptr3,20);
	ptr3[size]='\0';
	printf("%s\n",ptr3);
The code above is supposed to send each AT command and print the response.
I get these responses:
AT
AT+CMGF=1
AT+CMGS="00201285308016"
The responses are the same AT commands I sent, and I don’t know where is the problem.
Here is the 1st part of the code, before the above snippet:
	int fd;
	struct termios oldtio,newtio;
	fd = open("/dev/ttyS0", O_RDWR | O_NOCTTY);
	if (fd==-1)
	{
		printf("Can't Open Serial Port!\n");
		exit(0);
	}
	tcgetattr(fd,&oldtio); /* save current serial port settings */
	bzero(&newtio, sizeof(newtio)); /* clear struct for new port settings */
	newtio.c_cflag = BAUDRATE | CLOCAL | CS8 | CREAD;
	newtio.c_iflag = IGNPAR | ICRNL;
	newtio.c_oflag = 0;
	newtio.c_lflag = ICANON;
	newtio.c_cc[VINTR]    = 0;
	newtio.c_cc[VQUIT]    = 0;
	newtio.c_cc[VERASE]   = 0;
	newtio.c_cc[VKILL]    = 0;
	newtio.c_cc[VEOF]     = '>';
	newtio.c_cc[VTIME]    = 10;
	newtio.c_cc[VMIN]     = 0;
	newtio.c_cc[VSWTC]    = 0;
	newtio.c_cc[VSTART]   = 0;
	newtio.c_cc[VSTOP]    = 0;
	newtio.c_cc[VSUSP]    = 0;
	newtio.c_cc[VEOL]     = 0;
	newtio.c_cc[VREPRINT] = 0;
	newtio.c_cc[VDISCARD] = 0;
	newtio.c_cc[VWERASE]  = 0;
	newtio.c_cc[VLNEXT]   = 0;
	newtio.c_cc[VEOL2]    = 0;
	cfsetispeed(&newtio, BAUDRATE);
	cfsetospeed(&newtio, BAUDRATE);
	tcflush(fd, TCIFLUSH);
	tcsetattr(fd,TCSANOW,&newtio);
Any Help?