|
|
SMS Server Tools 3 Community |
Welcome, Guest. The forum is currently read-only, but will open soon. |
Fri Nov 22, 2024 02:28 |
This topic is locked
Page: 1
Author |
Post |
|
#1 Thu Jul 15, 2010 10:14, 174 months ago.
|
Member
Registered: Mar 2010
Location: depok, Indonesia
|
Operating system name and version: linux Version of smsd: 3.1.7beta Smsd installed from: sources Name and model of a modem / phone: wavecom Q2403A Interface: USB Hi Keke.. nice to meet you again.. so long time.. I don't know until now i can't receive long sms on m600i. maybe next time, W open again the topic Now I have problem in write ctrl+z in terminal(smsd -C GSM1) and regular_run_cmdfile. That run some code for running STK. When I press the ctrl+z in terminal, the program terminate to prompt, because the entri need 14 digit but i only need enter 11 digit so Ctrl+z is needed. This in terminal : This in file: Please help.. maybe i'm not correct in methode, please advice. Thanks, -alfin- « Last edit by alfinsi on Thu Jul 15, 2010 10:15, 174 months ago. »
|
|
#2 Thu Jul 15, 2010 10:32, 174 months ago.
|
Administrator
Registered: May 2009
Location: Jyväskylä, Finland
|
alfinsi wrote Now I have problem in write ctrl+z in terminal(smsd -C GSM1) and regular_run_cmdfile. That run some code for running STK. When I press the ctrl+z in terminal, the program terminate to prompt, because the entri need 14 digit but i only need enter 11 digit so Ctrl+z is needed.
When starting communication mode, the smsd says: Communicating with GSM1. ( Press Ctrl-C to abort. ) ( If you need to send Ctrl-Z, change the suspend character first, like stty susp \^N ) Default device is /dev/ttyUSB1 Press Enter to start or type an another device name.So, before starting communication mode, change the suspend character. alfinsi wrote echo $TEXT"0x1A" >> $TMPFILE
This should work: echo $TEXT$'\x1A' >> $TMPFILE
|
|
#3 Thu Jul 15, 2010 13:14, 174 months ago.
|
Member
Registered: Mar 2010
Location: depok, Indonesia
Topic owner
|
I have change the code like this: echo $TEXT$'\x1A' >> $TMPFILE but still error . I have copied the log bellow Oh ya please give an example write suspend character, because I was read in configuration doc. The sintak is suspend=filename (put in global)
|
|
#4 Thu Jul 15, 2010 13:38, 174 months ago.
|
Administrator
Registered: May 2009
Location: Jyväskylä, Finland
|
Your script is probably using #!/bin/sh, which may be a symbolic link to the /bin/dash, but my command was in syntax of bash shell. Because of this, your script is not writing Ctrl-Z character correctly to the file, as you can see from the log. Hopefully this script will help you. Run it and check what is the result: #!/bin/bash
TEXT="ABC" FILE=`mktemp /tmp/test_XXXXXX` echo $TEXT$'\x1A' > $FILE hexdump -C < $FILE rm $FILE 'bash' Syntax Highlight powered by GeSHi In my case, the result is: There is a character 1a correctly. Suspend character has nothing to do with a global setting suspend = filename. See man stty for details. For example, stty -a will tell you that " susp = ^Z", and because of this, you cannot send Ctrl-Z when using communication mode. You have to change the suspend character, for example as the instruction said: stty susp \^N. After this command, the suspend character is Ctrl-N and you can start communication mode and you are able to send Ctrl-Z to the modem.
|
|
#5 Thu Jul 15, 2010 17:48, 174 months ago.
|
Member
Registered: Mar 2010
Location: depok, Indonesia
Topic owner
|
Ok, Success press ctrl+z in terminal with type stty susp \^N first. But in cmd file is still Error.
I have added line #!/bin/bash, the script is writing Ctrl-Z character correctly to the file, but the process still same error. This is like the Ctrl-Z doesn't work, thats like when i haven't run stty susp \^N in terminal mode. May be this case need to change the suspend character first too.. before run the script. But how to write ?
|
|
#6 Thu Jul 15, 2010 18:00, 174 months ago.
|
Administrator
Registered: May 2009
Location: Jyväskylä, Finland
|
You need to change the suspend character only when using the communication mode.
There is a problem in the code of smsd. In the function run_rr(), there is a call cut_ctrl(st) which is used to remove line breaks. However, this call removes also Ctrl-Z because it's a control character. I have change this, probably within a next few days, and include the change in the 3.1.12.
|
|
#7 Thu Jul 15, 2010 18:31, 174 months ago.
|
Member
Registered: Mar 2010
Location: depok, Indonesia
Topic owner
|
Ok, I'll check that function too.. for my addon knowledge.. But for the best result, I'm waiting 3.1.12 release. I'll try and give the report soon.. I'm glad tobe one of contributors for this project. Thank you so much keke
|
|
#8 Fri Jul 16, 2010 09:34, 174 months ago.
|
Administrator
Registered: May 2009
Location: Jyväskylä, Finland
|
As you have compiled smsd from sources, you could apply the following changes. They fit to 3.1.7beta too, if necessary. Indentation does not matter. The first change will fix the Ctrl-Z issue in smsd.c: // cmd_to_modem opens a modem if necessary. if (DEVICE.dev_rr_cmdfile[0]) { if ((fp = fopen(DEVICE.dev_rr_cmdfile, "r"))) { while (fgets(st, sizeof(st), fp)) { // 3.1.12: remove only linebreaks: //cutspaces(st); //cut_ctrl(st); while (*st && strchr("\r\n", st[strlen(st) -1])) st[strlen(st) -1] = 0; if (*st && *st != '#')
The second change is required, because the command at+stgr=3,1; gives > as an answer, but the code is expecting OK or ERROR. With this change you can define that command as: (>)at+stgr=3,1;Smsd is then expecting >, and there will be no timeout and no error. // 3.1.5: Special case: AT+CUSD, wait USSD message: //put_command(*modem, device, cmd, answer, sizeof(answer), 1, EXPECT_OK_ERROR); if (!strncasecmp(command, "AT+CUSD", 7) && strlen(command) > 9) { is_ussd++; put_command(cmd, answer, sizeof(answer), 3, "(\\+CUSD:)|(ERROR)"); } else // 3.1.12: if (*cmd == '(' && strchr(cmd, ')')) { char *expect;
if ((expect = strdup(cmd))) { *(strchr(expect, ')') + 1) = 0; put_command(strchr(cmd, ')') + 1, answer, sizeof(answer), 1, expect); free(expect); } } else // ------- put_command(cmd, answer, sizeof(answer), 1, EXPECT_OK_ERROR);
if (*answer)
« Last edit by keke on Fri Jul 23, 2010 09:15, 174 months ago. »
|
|
#9 Thu Jul 22, 2010 02:45, 174 months ago.
|
Member
Registered: Mar 2010
Location: depok, Indonesia
Topic owner
|
I have been changed both code and compiled, the Ctrl-Z still doesn't work. i've modified my script to be like this: the result:
|
|
#10 Fri Jul 23, 2010 09:20, 174 months ago.
|
Administrator
Registered: May 2009
Location: Jyväskylä, Finland
|
Thanks for reporting this. I have changed the first patch, there was cutspaces() used and it removed Ctrl-Z. Comment out that call and recompile and try again.
Have you noticed that in your script the echo 333333 >> $TMPFILE probably should have $'\x1A' too?
|
|
#11 Fri Jul 23, 2010 10:35, 174 months ago.
|
Member
Registered: Mar 2010
Location: depok, Indonesia
Topic owner
|
Ok.. that's work properly and no error found inculde The echo 333333 >> $TMPFILE The echo 333333 >> $TMPFILE is just direct value that suitable with the digit length required, actually this isn't couse the error. The error appers, becouse this script is run sequential, so when 1 step error the next line will be error too.. Thank you so much keke nice work with you
|
|
#12 Fri Jul 23, 2010 12:49, 174 months ago.
|
Member
Registered: Mar 2010
Location: depok, Indonesia
Topic owner
|
Keke.. there is a question; After Ctrl-Z applied is there need a delay time ? becouse i have to add two lines for manipulate the error for the success process, like this: Quote echo $TEXT$'\x1A' >> $TMPFILE echo "at+stgi=6;" >> $TMPFILE echo "at+stgr=6,1,1;" >> $TMPFILE echo "at+stgi=6;" >> $TMPFILE echo "at+stgr=6,1,1;" >> $TMPFILE echo "at+stgi=6;" >> $TMPFILE echo "at+stgr=6,1,1;" >> $TMPFILE echo "at+stgi=3;" >> $TMPFILE echo "(>)at+stgr=3,1;" >> $TMPFILE
the result: from the log we can see, after ^Z the unswer is just OK not OK +STIN:6, So when next cmd AT+STGI=6 the unswer is <- +CME ERROR: 518 +STIN: 6, becouse STIN:6 is late. So i push add 2 line again for manipulate. Please advice, what should i do..
|
|
#13 Fri Jul 23, 2010 13:38, 174 months ago.
|
Member
Registered: Mar 2010
Location: depok, Indonesia
Topic owner
|
ok sorry, the problem solved i was modified the script like this Quote echo "at" > $TMPFILE echo "at+stgi=0;" >> $TMPFILE echo "at+stgr=0,1,1;" >> $TMPFILE echo "at+stgi=3;" >> $TMPFILE # echo "(>)at+stgr=3,1;" >> $TMPFILE echo "(>)at+stgr=3,1,\"$TEXT\";" >> $TMPFILE echo $'\x1A' >> $TMPFILE # echo $TEXT$'\x1A' >> $TMPFILE # echo "at+stgi=6;" >> $TMPFILE # echo "at+stgr=6,1,1;" >> $TMPFILE echo "at+stgi=6;" >> $TMPFILE echo "at+stgr=6,1,1;" >> $TMPFILE echo "at+stgi=6;" >> $TMPFILE
Thanks, i hope this useful for others
|
|
#14 Wed Aug 18, 2010 12:31, 173 months ago.
|
Administrator
Registered: May 2009
Location: Jyväskylä, Finland
|
For your information, this change will be included in the 3.1.12, BUT the format is slightly different. To allow multiple words to be defined, square brackets are used. For example:
[(>)]AT+STGR=3,1;
or:
[(>)|(ERROR)]AT+STGR=3,1;
Be aware with this change when you move to the 3.1.12 (after it's released, it is not yet but I'm working with it now).
|
This topic is locked
Page: 1
Time in this board is UTC.
|
|
|
|
|
|
|