📄 busmodem.lst
字号:
C51 COMPILER V6.23a BUSMODEM 08/30/2004 18:06:36 PAGE 1
C51 COMPILER V6.23a, COMPILATION OF MODULE BUSMODEM
OBJECT MODULE PLACED IN BusModem.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE BusModem.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 // This modul has the following functin:
2 // fuctionno=0: for protocol :NULL
3 // fuctionno=2: Link...(devno,StationNo) :devno[LL],devno[HH],StationNo[LL],StationNo[HH]
4 // fuctionno=4: Login (user name,password,OpSnr)
5 // :user name[10],password[10],OpSnr[4],SecurityStr[16]
6 // fuctionno=6: logout (down net) :NULL
7 // fuctionno=8: CheckTime send LocalTm,rec SeverTm) :loctm[6],svrtm[6](tm_format:YYMMDDhhmmss)
8 // fuctionno=10: Transfer Data () :data[...]
9 // fuctionno=12: Transfer End () :
10
11 #include "_POS.h"
12
13
14 #define MODEM_CP_LINK 02
15 #define MODEM_CP_LOGIN 04
16 #define MODEM_CP_LOGOUT 06
17 #define MODEM_CP_CHECKTIME 0X08
18 #define MODEM_CP_TDSTART 10 //packageno;;length_L;length_H;Sum_L;Sum_H;;
19 #define MODEM_CP_TDDATA 12 //data...
20 #define MODEM_CP_TDEND 14 //packageno;;length_L;length_H;Sum_L;Sum_H;;
21
22 #define CRC_POLYNOM 0x1021
23 #define CRC_PRESET 0xFFFF
24 #define CRC_CHKBYTES 2
25
26 #define MI_CRC_ZERO 0
27 #define MI_CRC_NOTZERO 1
28
29
30 char ModemLink(char *dialnum,int devno,int StationNo);
31 char ModemLogin(char username[10],char password[10],char opsnr[4]);
32 char ModemTime();
33 char ModemTx(unsigned char *txbuf, int length,unsigned int sno ,unsigned char funno,int waittm); //length
-<240
34 char ModemTx5(unsigned char *txbuf, int length,unsigned int sno ,unsigned char funno,int waittm); //lengt
-h<240
35 int ModemRx(unsigned char *rbuf, int length,int dl);//return =0:NOK, 1~256 OK'
36 char ModemOnline();
37 void ModemOffline();
38 char ModemSend(uchar *tm,int length);
39
40
41 unsigned char ModemInit();
42 unsigned char modemdial(unsigned char*num);
43 void modemanswer();
44 int modem_retcode(int handle,char *buf,int len);
45 int modem_rec(int dltm,int recnum,uchar *buf);
46 //int Calc_crc(uchar mode, uchar len, uchar *in, uchar *out);
47
48
49 unsigned char modemhd;
50
51 #define ESC 0x1b
52
53 #define EM -150
C51 COMPILER V6.23a BUSMODEM 08/30/2004 18:06:36 PAGE 2
54
55 //ret code state
56 #define Leading_CR 0
57 #define Leading_LF 1
58 #define Message 2
59 #define Trailing_CR 3
60 #define Trailing_LF 4
61
62 //return code
63 #define RE_NONE 0
64 #define RE_OK 1
65 #define RE_CONNECT 2
66 #define RE_RING 3
67 #define RE_NOCARRIER 4
68 #define RE_ERROR 5
69 #define RE_NODIALTONE 6
70 #define RE_BUSY 7
71 #define RE_NOANSWER 8
72 #define RE_CARRIER 9
73 #define RE_DATA 10
74 #define RE_FAX 11
75 #define RE_UNKNOWN 12
76 #define RE_TIMEOUT 13
77
78 #define MODEM_CP_REQDATA 15 //request data
79 #define MODEM_CP_RDSTART 16
80 #define MODEM_CP_RDSTDATA 18
81 #define MODEM_CP_RDEND 1a
82
83 #define MODEM_OK 1
84 #define MODEM_NOK 0
85
86
87 //modem command state
88 #define Idle 0
89 #define Dialing 1
90 #define Answer 2
91 #define Hangup 3
92 #define Online 4
93
94 #define PACKETSIZE 110
95 extern unsigned char devid;
96
97
98 char xdata RetInfo[11][12] = {//
99 "OK",
100 "CONNECT",
101 "RING",
102 "NO CARRIER",
103 "ERROR",
104 "NO DIALTONE",
105 "BUSY",
106 "NO ANSWER",
107 "CARRIER",
108 "DATA",
109 "FAX"
110 };
111
112 unsigned int mspb=2;
113
114
115
C51 COMPILER V6.23a BUSMODEM 08/30/2004 18:06:36 PAGE 3
116 //-------------------------------------------------------------------------------------------------
117 int modem_read(char dev_id,uint len,uchar *buf)
118 {
119 1 int last_r;
120 1 while(1)
121 1 {
122 2 last_r=_pRecBuf;
123 2 if(last_r==R232MEMMAX){ memcpy(buf,_R232Buf,len);_pRecBuf=0;return last_r;}
124 2 _delay_1ms(200);
125 2 if(last_r==_pRecBuf)
126 2 {
127 3 /*if(last_r>sizeof(buf))memcpy(buf,_R232Buf,sizeof(buf));
128 3 else */memcpy(buf,_R232Buf,last_r);
129 3 _pRecBuf=0;return last_r;
130 3 }
131 2 }
132 1 }
*** WARNING C280 IN LINE 117 OF BUSMODEM.C: 'dev_id': unreferenced local variable
133
134 int modem_write(char dev_id,uint len,uchar *buf)
135 {
136 1 _os232(buf,len);
137 1 }
*** WARNING C280 IN LINE 134 OF BUSMODEM.C: 'dev_id': unreferenced local variable
138
139 unsigned char modemdial(unsigned char *num)
140 {
141 1 uchar xdata phone[20]=" ";
142 1 uchar xdata cmd[40]="ATDT";
143 1 uchar xdata buf[40];
144 1 int i,len,ret;
145 1
146 1 if(strlen(num)<2)
147 1 {
148 2 _Clr(); _Display(0,1, "请输入电话号码:",15);
149 2 if(_GetStr(0,2,phone,16)==0) return MODEM_NOK;
150 2 strcat(cmd, phone);
151 2 strcat(cmd, "\r");
152 2 }
153 1 else
154 1 { strcat(cmd, num); strcat(cmd, "\r"); }
155 1 len = strlen(cmd);
156 1 // _display(LCD1,3,0,"请稍等.....");
157 1 _os232(cmd, len );
158 1 _delay_1ms(3000);_delay_1ms(3000);_delay_1ms(3000);
159 1 ret = modem_read(modemhd,len,(uchar *)buf);
160 1 if( ret<0 || ret!=len || strncmp(cmd, buf, len)!=0 )
161 1 {
162 2 return MODEM_NOK;
163 2 }
164 1 for(i=0;i<8;i++) {
165 2 ret = modem_retcode(modemhd, buf, 40);
166 2 if(ret==RE_NONE) {_delay_1ms(1500*mspb);continue;}
167 2 else if( ret==RE_CONNECT || ret==RE_CARRIER) {return MODEM_OK;}
168 2
169 2 }
170 1 return MODEM_NOK;
171 1 }
172
173 int modem_retcode(int modemhd, char *buf, int len)
174 {
175 1 int i, ret;
C51 COMPILER V6.23a BUSMODEM 08/30/2004 18:06:36 PAGE 4
176 1 uchar xdata *p;
177 1 p = (uchar *)buf;
178 1 for(i=0;i<len;i++)
179 1 {
180 2 ret = modem_read((uchar)modemhd, 1, p);
181 2 if(ret<0) return ret;
182 2 else if(ret==0) {
183 3 _delay_1ms(mspb);
184 3 ret = modem_read((uchar)modemhd, 1, p);
185 3 if(ret<0) return ret;
186 3 else if(ret==0) return 0;
187 3 }
188 2 for(i=0;i<11;i++) {
189 3 if(strncmp(buf+2, RetInfo[i], strlen(RetInfo[i]))==0)
190 3 {return (i+1); }
191 3 }
192 2
193 2 }
194 1 return (-4);
195 1 }
196
197
198
199
200
201
202
203 /*void modem_test()
204 {
205 unsigned char retchar,rbuf[300],ss[6000];
206 unsigned char menu_head[15]="请选择测试项目";
207 unsigned char menu0[18]="Modem Link(8001)";
208 unsigned char menu1[18]="ModemTime ";
209 unsigned char menu2[18]="ChkModemOnline ";
210 // unsigned char menu3[18]="ModemTx ";
211 unsigned char menu3[18]="ModemRx";
212 unsigned char menu4[18]="modemOffline";
213 unsigned char menu5[18]="modemLogin ";
214 unsigned char menu6[18]="modemLogout ";
215 unsigned char menu7[18]="ModemTime ";
216 unsigned char menu8[18]="TxPacket ";
217 unsigned char menu9[18]="TxBegin-x-End ";
218 // unsigned char menu6[18]="ModemOnline ";
219 unsigned char * menu[12]={menu0,menu1,menu2,menu3,menu4,menu5,menu6,menu7,menu8,menu9,0,0},tmp[0x20];
220 int ret,i;
221
222 page_clear(LCD1);
223 while (1) {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -