📄 modem.c
字号:
#include "Modem.h"
#include "sci.h"
#include <string.h>
#define MODEM_BUFFER_SIZE 250 // Size of Modem Buffer
BYTE InBuffer[256];
BYTE OutBuffer[10];
BYTE *In = &InBuffer[0];
BYTE *Out = &OutBuffer[0];
// Byte pointers of the ring buffer (FIFO)
volatile BYTE mDataSlot = 0; // Points to the next available character
volatile BYTE mEmptySlot = 0; // Points to next available slot of the FIFO
volatile BYTE mTest = 0;
volatile BYTE oTest = 0;
volatile BYTE firstTest = 0;
volatile BYTE isAdd = 0;
void addoid(void);
void strtob(void);
BYTE *ModemBuffer = &InBuffer[0];
extern BYTE *pordid;
extern BYTE ordidStr[];
extern BYTE looptimeStr[];
extern BYTE *plooptime;
extern DWORD ii,kk;
void ProcModemReceive (BYTE c)
{
ModemBuffer [mEmptySlot++] = c;
if (mEmptySlot > MODEM_BUFFER_SIZE) {
mEmptySlot = 0;
}
if(c == '['){
firstTest=1;
return;
}else if(c == ']'){
mTest=0;
return;
}else if(firstTest==1){
if(c == '$'){
mTest=1;
firstTest=0;
return;
}else{
firstTest=0;
}
}
if(mTest){
}
}
void ModemInit (void)
{
mDataSlot = 0; // Initialize FIFO Modem pointers
mEmptySlot = 0;
}
BYTE ModemBuffNotEmpty (void)
{
return !(mDataSlot == mEmptySlot);
}
void ModemBuffFlush (void)
{
mDataSlot = mEmptySlot;
}
BYTE Waitfor (char *String, BYTE Time)
{
BYTE c = 0;
BYTE Offset = 0;
while (Time-- > 0)
{
DelayM (100); // Wait =~ 150 mSec
while (ModemBuffNotEmpty())
{ // Wait for characters
c = ModemGetch (); // Extract a character from FIFO
if (c == String [Offset])
{ // Is C a part of the string?
Offset++; // Compare with next character
if (String [Offset] == 0)
{ // is this the end of string?
return True; // match = True
}
}
else // c does not belong to String
Offset = 0; // Reset String pointer
}
}
return False;
}
BYTE ModemGetch (void)
{
BYTE c = 0;
if (mDataSlot != mEmptySlot)
{
c = ModemBuffer [mDataSlot];
mDataSlot++;
if (mDataSlot > MODEM_BUFFER_SIZE)
mDataSlot = 0;
return(c);
}
else {
return (BYTE)0x00;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -