⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ckepage.ksc

📁 C-Kermit源码。是使用串口/Modem和网络通讯的程序
💻 KSC
字号:
#!/usr/local/bin/kermit +;; File APAGE.KSC; Version 4.0;if < \v(version) 700000 end 1 C-Kermit 7.0 or later required.; TAP/IXO alphanumeric paging script for Kermit 95 and C-Kermit.; Authors: F. da Cruz and C. Gianone, Columbia University, September 1996.;; For use with C-Kermit 7.0 / K95 1.1.17 or later.; For a detailed explanation, consult "Using C-Kermit", 2nd Ed., pp.454-456.;; Version 2.0: July 1997:;  1. To make TAPMSG fit into 1K for small C-Kermit versions.;  2. Change END to STOP within SWITCH to work around bug.; Version 3.0: September 1997:;  1. Change STOP back to END because bug is fixed.;  2. Added robustness.; Version 4.0: August 1998:;  1. Additional robustness - requires 2K command buffer.;  2. Diagnostics.;; WARNING: Automatic redialing is restricted or illegal in some; countries.  Modify the lines marked "IF LEGAL!" if below this applies; in your location.;; TAPMSG, defined below, is an alphanumeric pager dialing script that; implements the Telocator Alphanumeric Protocol (TAP), also known as IXO,; for sending one-line alphanumeric pages.  TAPMSG assumes the connection; to the paging service is already made.;; The APAGE macro makes a connection to the paging service and then uses; TAPMSG to send the page.  Here is a SAMPLE; you will need to adjust it; to work with your paging service.  Hint: Some paging services are very; picky about modem configurations.  For example, experience has shown; that to dial a certain service successfully with a USR 28.8 modem, just; about all of the modem's features must be turned off prior to dialing.; If you have trouble connecting to your service and staying connected,; try removing the ";" from the left margin of the commands marked; UNCOMMENT below.;; Replace values in lines marked (*) with the ones appropriate for your; computer, modem, and paging service:;; UNIX-SPECIFIC INSTRUCTIONS:; 1. Make sure C-Kermit 7.0 is installed and has permission to use;    dialout devices.; 2. Call this file "alphapage" or other name of your choice;; 3. Change the first line show the full pathname of the C-Kermit 7.0:    executable;; 4. Give this file execute permission ("chmod +x alphapage");; 5. Put this file in a directory that is in the PATH of users who need;    to send pages;; 6. Invoke with command-line arguments, e.g.:;;      alphapage "+1 (212) 555-1234" "This is a message";;    Use shell quoting rules to group words into arguments.;; GENERAL INSTRUCTIONS (work on all platforms).;; To invoke the APAGE macro, put it in a file, edit it as necessary for; your setup, tell C-Kermit to "take" the file (which installs the APAGE; and TAPMSG definitions) and then to send a page, just type:;;   apage number { this is a message };; at the C-Kermit> prompt, for example:;;   apage 99997654321 { Please call the office };; Note: the pager ID number should not contain any spaces or else you must; enclose it in braces:;;   apage { 999 76 543 21 } { This is a message };; Ditto for the message.;; DEBUGGING: If you want to see diagnostic and progress messages, type; "define testing 1" at the Kermit prompt before trying to send a page.;local usage \%massign \%m \fbasename(\%0)define usage { exit 1 {usage: \%m <phonenumber> <message>} }if not def TESTING def TESTING 0 ; Set to 1 for testing / debuggingif \m(TESTING) {		 ; So we can watch what happens    set dial display on    set input echo on    set terminal echo local    ; So output goes in session log    log session                ; Creates session.log in current directory    log transact               ; Creates transact.log in current directory}define APAGE {    local rc number            ; rc = Return code for this macro    if < \v(argc) 2 end 1 PIN required    asg number 5554321         ; (*) Paging service phone number    set modem type usr         ; (*) I have a USR modem    set port /dev/tty01        ; (*) on this device    if fail end 1 SET PORT failed    set speed 1200             ; (*) Must use 1200 bps for paging    set parity even            ; (*) and even parity    set flow none              ; (*) and no flow control    set modem flow none        ; (*) ...    set modem error-correction off    set modem data-compression off    set modem speed-matching off    set output pacing 200      ; Talk s-l-o-w-l-y to the paging service    set dial retries 20        ; (*) Allow 20 redials (IF LEGAL!)    set dial interval 1        ; (*) 1 sec between redial attempts (IF LEGAL!)    dial \m(number)            ; Call the pager service    asg rc \v(status)	       ; Save DIAL status    if = \m(rc) 0 {            ; If the call is answered        tapmsg \%1 {\%2}       ; Send the page        asg rc \v(status)      ; Save the result    } else {                   ; Otherwise        echo Page failed.      ; Fail.    }    hangup                     ; Hang up the phone    ;    ; For shared in-out ports you might need to reset the port's original    ; speed here and maybe also send it some kind of reset command like ATZ0.    ;    set modem type \v(modem)   ; Restore default modem settings    end \m(rc)                 ; Return}; TAPMSG Telocator Alphanumeric Protocol execution.  Call with:;   \%1 = Pager ID (PIN);   \%2 = Message (single line);  Assumes connection is made.  Uses TAP to send PIN and 1-line message.;def TAPMSG {    local \%i \%m \%s blk		; Local variables    asg \%m \2\%1\13\%2\13\3		; <STX>ID<CR>msg<CR><ETX>    asg \%s \fchecksum(\%m)		; Get checksum and make block    asg blk \%m\fchar(\fmod(\%s/256,16)+48)-\fchar(\fmod(\%s/16,16)+48)-\fchar(\fmod(\%s,16)+48)\13		; Checksummed TAP block    if \m(TESTING) xecho WAITING FOR ID= PROMPT...    for \%i 1 6 1 {			; Try six times to get prompt	out \13				; Send <CR>	in 3 ID=			; Wait for "ID="	if succ break        if \m(TESTING) xecho NO ID= PROMPT - TRYING AGAIN    }    if > \%i 6 end 1 FAILED: No "ID=" prompt after 6 tries    for \%i 1 8 1 {			; Send <ESC>PG1, get <ACK>	msleep 500	output \{27}PG1\13        if \m(TESTING) echo SENT <ESC>PG1(\%i)...	minput 3 {\6\13} {\21\13} {ID=} {\27\4\13}        if \m(TESTING) echo RESULT=\v(minput)	switch \v(minput) {	  :0, continue			; Timeout	  :1, break			; <ACK>	  :2, continue			; <NAK>	  :3, out \{27}PG1\13, continue	  :4, end 1 Forced disconnect	; Forced disconnect - fatal	}	break    }    if > \%i 8 end 1 Timeout during TAP    in 10 \27[p\13			; Wait for go-ahead    if fail end 1 No go-ahead		; Didn't get it    for \%i 1 8 1 {			; Try eight times	msleep 500	output \m(blk)			; Send block        if \m(TESTING) echo SENT BLOCK (\%i)...	minput 8 {\6\13} {\21\13} {\13\27\4\13} {\30\13}        if \m(TESTING) echo RESULT=\v(minput)	switch \v(minput) {             ; Get response	  :0, continue                  ; Timeout	  :1, break                     ; <ACK> - success	  :2, continue                  ; <NAK>	  :3, end 1 Forced Disconnect	  :4, echo ERROR - RETRYING, continue	}	out \4\13                       ; Sign off with <EOT>	in 8 \27\4\13                   ; Get <ESC><EOT> back	break                           ; But ignore timeout    }    if > \%i 8 end 1 Too many retries}; If invoked as a "kerbang" script execute it now.if equal "\%0" "\v(cmdfil)" {    if not def \%1 usage    if not def \%2 usage    apage {\%1} {\%2}    exit \v(status)}; (End)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -