#include <..\lib\8000lib.h>
#include <ucos.h>
#define BYTE unsigned char
#define BOOL unsigned char
#define ULONG unsigned long
#define TRUE 1
#define FALSE 0
#define CANCEL 2
#define MaxRow 7
#define MaxCol 19
#define NULL 0x00
static char *ACK = "ACK\r";
static char *NAK = "NAK\r";
int beep1[4] = {16, 5, 0, 0};
int beep2[8] = {30, 10, 0, 5, 30, 10, 0, 0};
int beep3[8] = {30, 50, 0, 5, 30, 50, 0, 0};
void DispString (int x, int y, char *str, int mode)
{
if (y < 0 || y > MaxRow)
return;
SetVideoMode (mode);
gotoxy (x, y);
printf ("%s", str);
SetVideoMode (0);
}
/*
display a english line
*/
void DispLine(int line, char *str, int mode)
{
int y;
if(line < 1 || line > 4)
return;
y = line * 2 - 1;
SetVideoMode (mode);
gotoxy (0, y);
printf ("%s", str);
SetVideoMode (0);
}
/*
display a simplify chinese string line
*/
void SCDispLine(int line, char *str, int mode)
{
int y;
if(line < 1 || line > 4)
return;
y = line * 2 - 1;
SetVideoMode (mode);
gotoxy (0, y);
scputs (str);
SetVideoMode (0);
}
static BOOL ConnectingPage (void)
{
clr_scr ();
DispString (0, 1, (char*)"连接中. ", 0);
DispString (0, 3, (char*)" ", 0);
DispString (0, 5, (char*)"按 ESC 退出", 0);
//DispString (0, 7, (char*)"cancel ", 0);
return TRUE;
}
BOOL DownloadLookup (void)
{ int i, j, k, m, sum, nPort;
int data_file;
BYTE c;
BYTE szData [256];
BYTE szBuf[256];
ConnectingPage ();
SetCommType (1, 2); // IR
nPort = 1; // must use COM1
c = 0x08; // 115200,N,8,1
open_com (nPort, c);
ReTry : //confirm connection(shake hands)
i = 0;
while (i < 10)
{
if (read_com (nPort, (char *)&c))
szData [i++] = c;
if (c == '\r')
break;
if ((c = getchar()) == KEY_ESC)
{
close_com (nPort);
return FALSE;
}
}
szData [i] = 0;
if (!strcmp (szData, "CIPHER\r"))
{
DispString (0, 1, (char*)"下载中", 0);
write_com (nPort, ACK);
while (!com_eot (nPort));
}
else
{
write_com (nPort, NAK);
while (!com_eot (nPort));
goto ReTry;
}
remove ("demoDBF");
data_file = create_DBF ((char *)"demoDBF", 220);
create_index (data_file,1, 0, 90);
// rebuild_index(slothandle,2,1,30,30);
m = 0;
while (1) // download lookup file
{
ReDo:
i = 0;
c = 0;
while (c != '\r')
{
if (read_com (nPort, (char *)&c))
*(szData+i++) = c;
if (getchar() == KEY_ESC)
{
close_com (nPort);
return FALSE;
}
}
i--;
*(szData+i) = 0;
if (!strcmp (szData, "OVER"))
{
write_com (nPort, ACK);
while (!com_eot (nPort));
break;
}
sum = 0; //Verify
for (j=0; j<i-2; j++)
sum += szData [j];
j = sum / 256;
if (j == 13)
j++;
k = sum % 256;
if (k == 13)
k++;
if (j != szData [i-2] || k != szData [i-1]) // checksum not correct
{
write_com (nPort, NAK);
while (!com_eot (nPort));
goto ReDo;
}
szData [i-2] = 0;
add_member (data_file, (char *)szData);
itoa (++m, szBuf, 10); //itoa(int to ascii)-> progress
DispString (1, 3, (char*)szBuf, 0); // show data transfered
write_com (nPort, ACK);
while (!com_eot (nPort));
}
close_com (nPort); // close COM
clr_scr ();
on_beeper (beep2);
close_DBF(data_file);
DispString (0, 1, (char*)"传输完成", 0);
//DispString (0, 5, (char*)"Please wait", 0);
OSTimeDly (200);
return TRUE;
}
BOOL UploadDBF (int fDbf, int nPort)
{
int i, j, k, n;
unsigned sum;
BYTE Header [2];
BYTE c;
BYTE szData [256];
BYTE szBuf[256];
ConnectingPage ();
SetCommType (1, 2); // IR
nPort = 1; // must use COM2
c = 0x08; // 115200,N,8,1
open_com (nPort, c);
ReTry:
i = 0;
while (i < 10)
{
if (read_com (nPort, (char *)&c)) // if successful reading
szData [i++] = c;
if (c == '\r')
break;
if ((c = getchar()) == KEY_ESC)
{
close_com (nPort);
clr_scr ();
return FALSE;
}
}
szData [i] = 0;
if (!strcmp (szData, "READ\r"))
{
write_com (nPort, ACK);
while (!com_eot (nPort));
DispString (0, 1, (char*)"上传中", 0); // Sending data...
DispString (0, 3, (char*)"状态:", 0); // Transfered:
}
else
{
write_com (nPort, NAK);
while (!com_eot (nPort));
goto ReTry;
}
n = member_in_DBF (fDbf);
lseek_DBF (fDbf, 1, 0, SEEK_SET); //SEEK_SET=1(from 8000lib.h)
k = 0;
while (k < n)
{
get_member (fDbf, 1, (char *)szData);
lseek_DBF (fDbf, 1, 1, SEEK_CUR);
j = strlen (szData);
if (j < 2)
{
k++;
continue;
}
sum = Header [0] = k++ % 10; // rotate from 0 to 9
for (i=0; i<j; i++)
sum += szData [i];
szData [j] = sum & 0xFF;
if (szData [j] == '\r') // make sure the checksum isn't '\r'
szData [j]++;
j++;
szData [j] = sum >> 8;
if (szData [j] == '\r') // make sure the checksum isn't '\r'
szData [j]++;
szData [++j] = '\r';
szData [++j] = 0;
itoa (k, szBuf, 10);
DispString (11, 3, (char*)szBuf, 0); // show data transfered
ReSend:
nwrite_com (nPort, (char *)Header, 1);
while (com_eot(nPort) == 0x00);
nwrite_com (nPort, (char *)szData, j);
while (!com_eot (nPort));
ReDo:
i = 0;
while (i < 10)
{
if (read_com (nPort, (char *)&c))
szBuf [i++] = c;
if (c == '\r')
break;
if ((c = getchar()) == KEY_ESC)
{
close_com (nPort);
clr_scr ();
return FALSE;
}
}
szBuf [i] = 0;
if (!strcmp (szBuf, NAK))
goto ReSend;
else if (strcmp (szBuf, ACK))
goto ReDo;
}
write_com (nPort, "OVER\r");
while (!com_eot (nPort));
write_com (nPort, "OVER\r");
while (!com_eot (nPort));
on_beeper (beep2);
DispString (11, 3, (char*)"完成", 0);
DispString (0, 5, (char*)" ", 0);
DispString (0, 7, (char*)" ", 0);
close_com (nPort);
OSTimeDly (200);
return TRUE;
}
BOOL GetBarData(void)
{
BYTE tempkey;
while (1)
{
if (Decode ())
{
on_beeper (beep2);
HaltScanner1();
return TRUE;
}
else
{
tempkey=getchar();
if (tempkey==KEY_ESC)
{
HaltScanner1();
break;
}
}
}
return CANCEL;
}
void main()
{
BYTE c,h,jk;
BOOL flag;
char key;
int i,n,j,m,ijk,jj,searchflag,saveflag,filehandle,len,slothandle,parthandle,stop,partlen,f_hd,ref_hd;
char tank_number[31];
char zyd[60];
char BarCodeII[95];
char BarCodeI[32];
char zb[32];
char zb1[32];
char slot