Code:
#include <string.h>
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <process.h>
#include "..\lib\7188e.h"
#include "..\lib\vxcomm.h"
#if (__BORLANDC__ <= 0x460) || !defined(__cplusplus) // Define o Tipo Booleano para o C
typedef enum { false, true } bool;
#endif
#define SUCCESS 1 // Retorno OK
#define WARNING 0 // Retorno Com Aviso
#define ERROR -1 // Retorno Erro
#define STX 2 // Valor Númerico do Caractere de Inicio de pacote (2)
#define CR 13 // Valor Númerico do Caractere de Finalização de pacote (13)
#define LF 10 // Valor Númerico do Caractere de Finalização de pacote (10)
#define TAB 9 // Valor Númerico do TAB (Separador de Dados em Pacote)
#define VER 0 // Verifica (Função: Fila)
#define ADD 1 // Adiciona (Função: Fila)
#define REM 2 // Remove (Função: Fila)
/*
/************************************************************************\
Controle de Váriaves
/************************************************************************\
*/
// Váriaveis e Funções Globais do Sistema
void ProcessaBuffer (void);
void AcaoBotaoConfirma (void);
void AcaoBotaoCancela (void);
void EscreveDisplay (unsigned char *pMensagem);
char cSTX; // Caractere de Inicio de pacote (2)
char cCR; // Caractere de Finalização de pacote (13)
char cLF; // Caractere de Finalização de pacote (10)
char cTab; // TAB (Separador de Dados em Pacote)
// Váriaveis de Controle da Serial
unsigned int iComBalanca = 1; // Porta Serial da Balança
unsigned int iComDisplay = 2; // Porta Serial do Display
int iComBalOn; // Status da Serial da Balança (Ativo = 1 / Inativo = 0)
int iComDispOn; // Status da Serial do Display (Ativo = 1 / Inativo = 0)
int iComBalRx = 0; // Recebendo Dados da Serial
int iMaxBuffer = 300; // Tamanho máximo do Buffer de Recebimento
unsigned char *InBuf; // Buffer de Recebimento.
int iTempoDisplay = 0;
// Váriaveis de Controle Socket
int iUserSocket; // Váriavel Que armazena o Socket da PortUser
bool iSckRx = false; // Indica se Está processando alguma coisa pelo Socket.
int iSckMaxBuffer = 128; // Tamanho máximo do Buffer de Recebimento do Socket
int iContGlobal = 0;
// Váriaveis de Controle de I/O Digitais
int iInput0 = 0; // Botão Verde. Confirma) | Indica o Status de Cada Porta do Input (1 = Ativada / 0 = Desativada)
int iInput1 = 0; // Botão Preto. (Cancela)
int iStepInput0 = 0; // Identifica o Passo (Ação) Acumulada para o Botão Verde no momento da chamada
int iStepInput1 = 0; // Identifica o Passo (Ação) Acumulada para o Botão Preto no momento da chamada
int iStepTimer = 0;
// Várioveis de Controle de Erro
int iErroID = 0; // ID do Erro
char strErro [50]; // Mensagem de Erro
// Váriaveis de Pesagem
unsigned char *cStatus; // Indica se o Peso atual está em movimento ou é estabilizado
unsigned int iEstavel=0; // Indica se o Peso Atual da Balança é Peso EStabilizado (1) ou Em movimento (0)
long lPeso = 0; // Peso Atual da Balança
long lPesoAtendido = 0; // Cumulativo do Peso da Balança Para o Item
long lPesoTara = 0; // Tara Da Balança
long lPesoDecrescente; // Peso que é mostrado no Display Lamix, Descrescente, mostrando o que falta para concluir o Item
long lPesoTotal; // Peso Total contando a Tara (Pesagens Antecedentes) + Peso Atual
long lPesoRequerida; // Peso Requerido do Item contando com a Umidade
long lTolMinima; // Percentual Mínimo de Tolerância do Item na fórmula
long lTolMaxima; // Percentual Máximo de Tolerância do Item na fórmula
int iTolerancia = -2; // Identifica se o Peso está na tolerância permitida
int iItemID = 0; // Identifica a contagem do Item que está processando.
int iPesaItem = 0; // Pega Pesagem
//unsigned char CD_FABRICA [5], BATCH_ID [11], CD_PESAGEM [9], CD_BALANCA [5], ITEM_DESC1 [12]; // Váriaveis do Pacote Ordem de Pesagem
//unsigned char MATERIAL_DETAIL_ID [11], NR_SEQ_PESAGEM [3], CD_MATERIA_PRIMA [11], DS_ABREVIADA [11]; // Váriaveis do Pacote do Item da Ordem de Pesagem
//unsigned char QT_REQUERIDA [12], PR_TOLERANCIA_MIN [6], PR_TOLERANCIA_MAX[6], ID_PESAR [2]; // .........
unsigned char *CD_FABRICA, *BATCH_ID, *CD_PESAGEM, *CD_BALANCA, *ITEM_DESC1; // Váriaveis do Pacote Ordem de Pesagem
unsigned char *MATERIAL_DETAIL_ID, *NR_SEQ_PESAGEM, *CD_MATERIA_PRIMA, *DS_ABREVIADA; // Váriaveis do Pacote do Item da Ordem de Pesagem
unsigned char *QT_REQUERIDA, *PR_TOLERANCIA_MIN, *PR_TOLERANCIA_MAX, *ID_PESAR; // .........
unsigned char *PESOTOTAL;
/*
/************************************************************************\
Inicio das Funções do Aplicativo
/************************************************************************\
*/
/*
void SckDebug (char *cMsgFinal)
{
int iLen;
if (iUserSocket){
sprintf (cMsgFinal, "[DEBUG]: %s", cMsgFinal);
VcomSendSocket(iUserSocket, cMsgFinal, iLen);
iLen = strlen (cMsgFinal);
}
}
*/
void TrataErros (void){
// Verifica a Ocorrência de Erro, exibe na saída e para aplicação
if (iErroID != 0){
//printCom1 ("%d - %s", iErroID, strErro);
RestoreCom(iComBalanca);
RestoreCom(iComDisplay);
EscreveDisplay ("ERRO AO ABRIR SERIAL!");
exit (EXIT_FAILURE);
}
}
void ClearStr ( char * pString )
{
*pString = '\0';
}
char *substr(const char *pstr, int start, int numchars)
{
char *pnew = malloc(numchars+1);
strncpy(pnew, pstr + start, numchars);
pnew[numchars] = '\0';
return pnew;
}
int strpos (unsigned char *pStrText, char pChar){ // Última ocorrência do caractere.
int iLen, iCont;
iLen = strlen (pStrText);
if (iLen > 0){
for (iCont=0; iCont<iLen; iCont++){
if (pStrText[iCont] == pChar)
return iCont;
}
return ERROR; // Não houve ocorrências
}
else { return ERROR; } // String Nula
}
int strrpos (unsigned char *pStrText, char pChar){ // Última ocorrência do caractere.
int iLen, iCont;
iLen = strlen (pStrText);
if (iLen > 0){
for (iCont=iLen - 1; iCont>=0; iCont--){
if (pStrText[iCont] == pChar)
return iCont;
}
return ERROR; // Não houve ocorrências
}
else { return ERROR; } // String Nula
}
/*
/************************************************************************\
Inicio das Funções de Comunicação
/************************************************************************\
*/
void IniciaSerial (void){ // Inicia (conecta) as portas Seriais do Equipamento
//
SetBaudrate(iComBalanca, 9600);
SetDataFormat(iComBalanca, 8, 0, 2);
//
InBuf = malloc (iMaxBuffer); // Aloca Memória pra armazenar buffer;
//
iComBalOn = InstallCom(iComBalanca, 9600, 8, 0, 2);
if (iComBalOn == 0){
ClearCom(iComBalanca); // Limpa qualquer Buffer anteriormente Armazenado na Balança.
//printCom1 ("Conectado\n");
SetBaudrate(iComDisplay, 2400);
iComDispOn = InstallCom(iComDisplay, 2400, 8, 0, 1);
if (iComDispOn != 0){
iErroID = 2; strcpy (strErro, "Erro ao Conectar no Display.");
}
}
else { iErroID = 1; strcpy (strErro, "Erro ao Conectar na Balança."); }
TrataErros ();
}
void IniciaMemoria (void){
CD_FABRICA = malloc (5);
BATCH_ID = malloc (11);
CD_PESAGEM = malloc (9);
CD_BALANCA = malloc (5);
ITEM_DESC1 = malloc (12);
MATERIAL_DETAIL_ID = malloc (11);
NR_SEQ_PESAGEM = malloc (3);
CD_MATERIA_PRIMA = malloc (11);
DS_ABREVIADA = malloc (11);
QT_REQUERIDA = malloc (6);
PR_TOLERANCIA_MIN = malloc (6);
PR_TOLERANCIA_MAX = malloc (6);
ID_PESAR = malloc (2);
PESOTOTAL = malloc (6);
}
int RecebeSerial(void){
int iLenBuf, iMaxLocal, iReadReturn;
if(IsCom(iComBalanca)){
iComBalRx = 1;
if (strlen (InBuf) >= iMaxBuffer - 1){ // Limpa Buffer se Estiver Cheio
ClearStr (InBuf);
}
iLenBuf = DataSizeInCom (iComBalanca);
if (iLenBuf + strlen (InBuf) >= iMaxBuffer - 1){
ClearStr (InBuf);
}
if (iLenBuf >= iMaxBuffer - 1){
iLenBuf = iMaxBuffer - 1;
}
iReadReturn = ReadComn(iComBalanca, InBuf, iLenBuf);
InBuf [iLenBuf] = '\0';
if (iReadReturn >= 0){
iComBalRx = 0;
if (iLenBuf == 17)
{
ProcessaBuffer ();
}
}
return SUCCESS;
}
return ERROR;
}
void VerificaBotoes (void){ // Verifica o Pressionamento de Algum botão através das I/O Digitais
unsigned char DI;
char lc_botao [1];
DI = inportb(0);
sprintf (lc_botao, "%x", DI); // Converte para Hexadecimal o Valor.
switch (lc_botao[0]){
case 'e': // Pressionado Botão 1 (Verde)
iInput0 = 1;
AcaoBotaoConfirma ();
break;
case 'd': // Pressionado Botão 2 (Preto)
iInput1 = 1;
AcaoBotaoCancela ();
break;
default:
break;
}
}
void EnviaPedidoPC (unsigned char *pChar, int pTamanho){
unsigned char *cMsgFinal = malloc(pTamanho + 1);
int iLen;
if (iUserSocket){
sprintf(cMsgFinal, "%c%s%c%c", cSTX, pChar, cCR, cLF); // Formata Pacote
iLen = strlen (cMsgFinal);
VcomSendSocket(iUserSocket, cMsgFinal, iLen);
//printCom1 ("EnviaPedidoPC: %s", pChar);
}
}
void Fila (unsigned int pFuncao){ // Controle do Enfileiramento de Comunicação
switch (pFuncao){
case VER:
break;
case ADD:
break;
case REM:
break;
}
}
/*
/************************************************************************\
Inicio das Funções de Processamento
/************************************************************************\
*/
int DevolvePesagem (void){
unsigned char *cStr = malloc (30);
lPesoTotal = lPesoRequerida;
sprintf (cStr, "OIRS\t%s\t%s\t%d", MATERIAL_DETAIL_ID, CD_MATERIA_PRIMA, lPesoTotal);
//printCom1 (cStr);
EnviaPedidoPC (cStr, strlen(cStr));
return SUCCESS;
}
void Validatolerancia (void){
if (ID_PESAR[0]=='1'){
if (lPesoAtendido >= lTolMinima && lPesoAtendido <= lTolMaxima){
iTolerancia = 0; // OK
//EscreveDisplay ("PESO OK");
//iStepInput0 = 4;
}
else if (lPesoAtendido < lTolMinima){
iTolerancia = -1; // Faltando
EscreveDisplay ("PESO ABAIXO");
}
else if (lPesoAtendido > lTolMaxima){
iTolerancia = 1; // Sobrando
EscreveDisplay ("PESO ACIMA");
}
}
else
{
iTolerancia = 0;
}
}
int VerificaBalancaVazia (void){ // Verifica se a Balança está preparada pra Pesagem. -1 Negativo | 1 - OK | 0 Esvazie Balança (WARNING)
return SUCCESS;
/*
if (lPeso >= -10 && lPeso <= 10){ // Peso 0
//EscreveDisplay ("BALANCA VAZIA");
return SUCCESS;
}
else if (lPeso < -10){
EscreveDisplay ("PESO NEGATIVO");
return ERROR;
}
else{
EscreveDisplay ("ESVAZIE A BALANCA");
return WARNING;
}
*/
}
void AcaoBotaoConfirma (void){
if (iInput0 == 1){
if (iStepTimer>=10)
iStepTimer = 0;
if (iStepTimer==0){
iStepTimer++;
switch (iStepInput0){
case 0:
// Requisição de OP
EnviaPedidoPC ("OPSL", 4);
break;
case 1:
// Valida Tolerância / Conclui Pesagem de Item
Validatolerancia ();
break;
case 2:
// Confirma Cancelar Item
iStepInput0 = 1;
iStepInput1 = 0;
EnviaPedidoPC ("OISL", 4);
break;
case 3:
// Confirma Cancelar Carga
iStepInput0 = 0;
iStepInput1 = 0;
EnviaPedidoPC ("OPCN", 4);
EscreveDisplay ("ORDEM CANCELADA");
break;
case 4:
// Ordem Concluída.
iStepInput0 = 0;
EscreveDisplay ("ORDEM CONCLUIDA");
break;
case 5:
iStepInput0 = 1;
break;
default:
break;
}
}
}
iInput0 = 0;
}
void AcaoBotaoCancela (void){
if (iInput1 == 1){
switch (iStepInput1){
case 0:
// Pede Para Cancela Item
iStepInput0 = 2;
iStepInput1 = 1;
iPesaItem = 0;
EscreveDisplay ("CANCELAR ITEM");
break;
case 1:
// Cancelar Ordem ?
iStepInput0 = 3;
iStepInput1 = 2;
EscreveDisplay ("CANCELAR ORDEM");
break;
case 2:
// Anula Cancelamento.
iStepInput0 = 1;
iStepInput1 = 0;
iPesaItem = 1;
break;
case 3:
// Cancela Produto Extra
iStepInput0 = 0;
iStepInput1 = 0;
EscreveDisplay ("ORDEM CONCLUIDA");
break;
default:
break;
}
}
iInput1 = 0;
}
void PesaItem (void){
unsigned char *PacotePeso;
unsigned char *PesoDisplay;
if (ID_PESAR[0]=='1'){
lPesoAtendido = lPeso - lPesoTara;
lPesoTotal = lPesoTara + lPeso;
lPesoDecrescente = lPesoRequerida - lPesoAtendido;
sprintf (PesoDisplay, "PESO: %d", lPesoDecrescente);
if (iTempoDisplay >= 25){
EscreveDisplay (PesoDisplay);
iTempoDisplay= 0;
}
}
else{
lPesoAtendido = lPesoRequerida;
}
if (iTolerancia == 0){
iPesaItem = 0;
iTolerancia = -2;
if (DevolvePesagem () == 1){
}
//break;
}
}
void OrdemProducao (unsigned char *pOP){ //OP CD_FABRICA BATCH_ID CD_PESAGEM CD_BALANCA ITEM_DESC1
unsigned char *cValor = NULL;
int iTab, iCont=1;
ClearStr (CD_FABRICA);
ClearStr (CD_PESAGEM);
ClearStr (CD_BALANCA);
ClearStr (ITEM_DESC1);
cValor = strtok(pOP, "\t"); // Procura Pelo TAB
while (cValor){
switch (iCont){
case 1:
strcpy (CD_FABRICA, cValor);
//printCom1("CD_FABRICA %s",CD_FABRICA);
break;
case 2:
strcpy (BATCH_ID,cValor);
//printCom1("BATCH_ID %s",BATCH_ID);
break;
case 3:
strcpy (CD_PESAGEM,cValor);
//printCom1("CD_PESAGEM %s",CD_PESAGEM);
break;
case 4:
strcpy (CD_BALANCA,cValor);
//printCom1("CD_BALANCA %s",CD_BALANCA);
break;
case 5:
strcpy (ITEM_DESC1,cValor);
//printCom1("ITEM_DESC1 %s", ITEM_DESC1);
break;
default:
//printCom1("valor %s", cValor);
break;
}
cValor = strtok(NULL, "\t");
iCont++;
}
iStepInput0 = 1;
EnviaPedidoPC ("OKOP", 4);
//EscreveDisplay (ITEM_DESC1);
}
void OrdemProducaoItem (unsigned char *pOPItem){ //MATERIAL_DETAIL_ID / NR_SEQ_PESAGEM / CD_MATERIA_PRIMA/ DS_ABREVIADA / QT_REQUERIDA / PR_TOLERANCIA_MIN / PR_TOLERANCIA_MAX / ID_PESAR
unsigned char *cValor = NULL;
int iTab, iCont=1;
/*
ClearStr (MATERIAL_DETAIL_ID);
ClearStr (NR_SEQ_PESAGEM);
ClearStr (CD_MATERIA_PRIMA);
ClearStr (DS_ABREVIADA);
ClearStr (QT_REQUERIDA);
ClearStr (PR_TOLERANCIA_MIN);
ClearStr (PR_TOLERANCIA_MAX);
ClearStr (ID_PESAR);
*/
cValor = strtok(pOPItem, "\t"); // Procura Pelo TAB
while (cValor){
switch (iCont){
case 1:
strcpy (MATERIAL_DETAIL_ID, cValor);
break;
case 2:
strcpy (NR_SEQ_PESAGEM,cValor);
break;
case 3:
strcpy (CD_MATERIA_PRIMA,cValor);
break;
case 4:
strcpy (DS_ABREVIADA,cValor);
break;
case 5:
strcpy (QT_REQUERIDA,cValor);
lPesoRequerida = strtol (QT_REQUERIDA, NULL, 10);
break;
case 6:
strcpy (PR_TOLERANCIA_MIN,cValor);
lTolMinima = strtol (PR_TOLERANCIA_MIN, NULL, 10);
break;
case 7:
strcpy (PR_TOLERANCIA_MAX,cValor);
lTolMaxima = strtol (PR_TOLERANCIA_MAX, NULL, 10);
break;
case 8:
strcpy (ID_PESAR,cValor);
break;
default:
break;
}
cValor = strtok(NULL, "\t");
iCont++;
}
iItemID++;
EnviaPedidoPC ("OKOI", 4);
EscreveDisplay (DS_ABREVIADA);
}
int ProcessaChamado (unsigned char *pPacote, int pLen){
unsigned char *cFuncao;
unsigned char *cSubFuncao;
unsigned char *cPacote = malloc(pLen);
unsigned char *strDisplay;
int iPosStart, iPosEnd, iPosTam;
if (cPacote == NULL)
//printCom1 ("Não foi Possível Alocar Memória: ProcessaChamado");
iComBalRx = 1;
//Separa o Pacote
iPosStart = strpos (pPacote, cSTX);
iPosStart++;
iPosEnd = strpos (pPacote, cCR);
iPosTam = iPosEnd - iPosStart;
////printCom1 ("CHAMADO %s", pPacote);
if((iPosStart >= 0) && (iPosEnd)){
cPacote = substr(pPacote, iPosStart, iPosTam);
if(strlen (cPacote) > 0){
cFuncao = substr(cPacote, 0, 2);
if (strcmp (cFuncao, "OP") == 0){ // Recebe Ordem de Pesagem
OrdemProducao (substr (cPacote, 3, iPosTam - 2));
}
else if (strcmp (cFuncao, "OI") == 0){ // Recebe Ordem de Pesagem Item
OrdemProducaoItem (substr (cPacote, 2, iPosTam - 2));
}
else if (strcmp (cFuncao, "OK") == 0){ // Tratamento de Confirmações
cSubFuncao = substr (cPacote,2, 2);
if (strcmp (cSubFuncao, "OP") == 0) { // Recebe Confirmação de Ordem de Pesagem
EnviaPedidoPC ("OISL", 4);
}
else if (strcmp (cSubFuncao, "OI") == 0){ // Recebe Confirmação de Ordem de Pesagem Item
if (iItemID == 1)
while (VerificaBalancaVazia () != 1){
}
lPesoTara = lPeso;
iPesaItem = 1;
}
else if (strcmp (cSubFuncao, "IR") == 0){ // Recebe Confirmação de Entrega de Resposta de Item
EnviaPedidoPC ("OISL", 4);
}
}
else if (strcmp (cFuncao, "FI") == 0){ // Recebe Finaliza Item Indicando que Recebeu Todos Itens da OP
iStepInput0 = 4;
EnviaPedidoPC ("OPFI", 4);
EscreveDisplay ("PRODUTO EXTRA");
//Limpa Váriaveis
}
else if (strcmp (cFuncao, "ER") == 0){ // Erro do Objeto de Comunicação
//sprintf (strDisplay, "ERRO: %s", cPacote);
EscreveDisplay (substr (cPacote, 3, iPosTam - 2));
iStepInput0 = 0;
}
else if (strcmp (cFuncao, "CC") == 0){ // Check Connection
////printCom1 ("CheckConnection");
}
else{
////printCom1 ("\n[PACOTE N IDENTIFICADO] %s", cPacote);
}
}
else {
iSckRx = false;
return 0;
}
}
else { } ////printCom1 ("[PACOTE][STX]: %d [CR] %d [PACOTE]: %s", iPosStart, iPosEnd, pPacote); }
iComBalRx = 0;
iSckRx = false;
return 1;
}
void EscreveDisplay (unsigned char *pMensagem){
unsigned char cPacote [51];
unsigned int iLims;
unsigned int iLenMsg, iLenCont, iContIndex;
int iBcc;
iLims = 46;
cPacote [0] = 129;
cPacote [1] = 126;
cPacote [2] = iLims % 256;
cPacote [3] = iLims / 256;
cPacote [4] = 1 % 256;
cPacote [5] = 1 / 256;
cPacote [6] = 0 % 256;
cPacote [7] = 0 / 256;
cPacote [8] = 76;
cPacote [9] = 202;
iLenMsg = strlen (pMensagem);
if (iLenMsg > 40)
iLenMsg = 40;
if (iLenMsg < 40){
for(iLenCont=iLenMsg; iLenCont<40; iLenCont++)
strcat (pMensagem, ".");
}
for(iLenCont=0; iLenCont<40; iLenCont++){
iContIndex = iLenCont + 10;
cPacote [iContIndex] = pMensagem [iLenCont];
}
iBcc = cPacote [4];
cPacote [50] = iBcc;
cPacote [51] = '\0';
for(iContIndex=0; iContIndex<=51; iContIndex++){
ToCom (iComDisplay, cPacote[iContIndex]);
}
////printCom1 (pMensagem);
//ClearStr (cPacote);
}
void ProcessaBuffer (){
//int iFlag;
//char cMovto, cNegativo, cResolucao;
unsigned char *cPacote, *cPeso;
//unsigned char cByte;
int iCont;
int iPosStart, iPosEnd, iPosTam;
//strcpy (pInBuf, InBuf); // Transfere para Buffer Local
//strcpy (InBuf, ""); // Limpa Buffer Global
iPosStart = strrpos (InBuf, cSTX);
if(iPosStart >= 0)
iPosStart++;
iPosEnd = strrpos (InBuf, cCR);
iPosTam = iPosEnd - iPosStart;
if((iPosStart >= 0) && (iPosEnd) && (iPosTam == 15)){
cPacote = substr(InBuf, iPosStart, iPosTam);
cStatus = substr(cPacote, 1, 1);
cPeso = substr(cPacote, 3, 6);
lPeso = strtod (cPeso, NULL);
}
ClearStr (InBuf);
}
/*
/************************************************************************\
Inicio da Estrutura X-Server (Main do Programa)
/************************************************************************\
*/
void UserCount(void)
{
if(iComBalRx == 0){
RecebeSerial ();
}
VerificaBotoes ();
if (iPesaItem == 1){
PesaItem ();
}
if (iStepTimer >= 1 && iStepTimer < 10)
iStepTimer++;
iTempoDisplay++;
}
void UserInit(void)
{
InitLib();
IniciaSerial ();
IniciaMemoria();
PortUser = 5050; // Habilita porta 5050 para Controle do Usuário (Aplicação Objeto de Comunicação (Listener))
// Transforma os Int em Char (ASCII)
cSTX = STX;
cCR = CR;
cLF = LF;
cTab = TAB;
EscreveDisplay ("LENKE AUTOMACAO");
AddUserTimerFunction(UserCount, 200); // Adiciona Timer para Chamar Função UserCount a cada 100 ms
}
void UserLoopFun(void)
{
// Loop Principal do Programa
}
int UserCmd(unsigned char *Cmd,unsigned char *Response)
{
// Ao Receber qualquer comando na porta 10000, Responde com o que Recebeu
strcpy (Response, Cmd);
return 1;
}
int VcomUserBinaryCmd(TCPREADDATA *p)
{
VcomSendSocket(p->Socket,p->ReadUartChar,p->Length);
return 1;
}
int VcomCmdUser(TCPREADDATA *p) // Processa as Entradas Recebidas Pelo Usuário. (Obj. Comunicação
{
if (!iSckRx){
if (p->Length >= 4 && p->Length <= iSckMaxBuffer){ // Pelo Menos 4 Caracteres [STX]XX[13][10]
iSckRx = true;
if (ProcessaChamado (p->ReadUartChar, p->Length)){
if (!iSckRx)
ClearStr (p->ReadUartChar);
}
}
}
return 1;
}
void PortUserStart(int skt)
{
// Procedimentos a serem executados
// Quando for iniciado a Porta definida pelo usuário
iUserSocket = skt;
skt=skt; //do nothing
}
void Port9999Start(int skt)
{
skt=skt; //do nothing
}
void Port502Start(int skt)
{
skt=skt; //do nothing
}