CrazyEngineers
  • problem in c code

    Updated: Oct 12, 2024
    Views: 911
    hi this is vipul

    i am having a problem in my c code.
    the proble is as we are transmitting data from rs232 via laser and reciever doesn't show what we send.
    for eg we send small 'g' and recieving pane shows 'D'.
    following is the code can anyone help me?????????
    #include <dos.h>
    #include <stdlib.h>
    #include <conio.h>
    #include <bios.h>
    #include <stdio.h>

    #define COM1 0
    #define COM2 1
    #define DATA_READY 0x100
    #define TRUE 1
    #define FALSE 0
    #define ESC_KEY '\x1b'

    #define SETTINGS ( _COM_9600 | _COM_CHR8 | _COM_NOPARITY | _COM_STOP1)

    void clear_line(int line)
    {
    int i;

    gotoxy(1,line); // clear a whole line
    for(i=0;i<80;i++)
    printf(" ");
    }
    int main(int argc, char *argv[])
    {
    int in, out, status, done = FALSE;
    int curs_rx=0,curs_ry=15,curs_tx=0,curs_ty=4;
    int com_port=COM1;

    if (!(argc == 2 && (argv[1][0] == '2' || argv[1][0] == '1')))
    {
    printf("Usage: LASER [1|2]\nwhere 1 = Com port 1\n 2 = Com port 2\n");
    exit(-1);
    }
    if (argv[1][0]=='2') // select com port
    com_port = COM2;
    else
    com_port = COM1;

    bioscom(_COM_INIT, SETTINGS, com_port); // Initialize serial port

    clrscr();
    printf(" GKDesign (c) 1997 Laser Transceiver Communicator V1.1\n");
    printf(" Press [ESC] to exit program\n");
    printf("__________________________________ Sent Data ___________________________________");
    gotoxy(1,13);
    printf("________________________________ Recieved Data _________________________________");

    while (!done) {
    status = bioscom(_COM_STATUS, 0, com_port); // recieved data?
    if (status & DATA_READY)
    if ((out = bioscom(_COM_RECEIVE, 0, com_port) & 0x7F) != 0) { // get data
    if (curs_rx < 78) // move cursor
    curs_rx++;
    else {
    curs_rx = 1; // at end of line
    if (curs_ry < 23)
    curs_ry++;
    else
    curs_ry = 15;

    clear_line(curs_ry);
    }
    gotoxy(curs_rx,curs_ry); // goto correct screen location
    putch(out); // print the character
    }
    if (kbhit()) {
    if ((in = getch()) == ESC_KEY) // check for ESC key
    done = TRUE;

    if(!in) // read an extended character
    in = getch();

    if (curs_tx < 78) // position cursor
    curs_tx++;
    else {
    curs_tx = 1; // at end of line
    if (curs_ty < 12)
    curs_ty++;
    else
    curs_ty = 4;

    clear_line(curs_ty);
    }
    gotoxy(curs_tx,curs_ty); // goto correct screen location
    putch(in); // print the character
    bioscom(_COM_SEND, in, com_port); // output data
    }
    }
    clrscr();
    return (0);
    }
    0
    Replies
Howdy guest!
Dear guest, you must be logged-in to participate on CrazyEngineers. We would love to have you as a member of our community. Consider creating an account or login.
Home Channels Search Login Register