Hi all,
I m doing one c program for serial communication.In that i want to send request to one hardware module, after receiving my request that h/w send me one frame with predefined format.

CPP / C++ / C Code:

/*
Program SERIALCOMMUNICATION.C is used for PC to PC or PC to Hardware
Communication.

*/
#include<bios.h>
#include<stdio.h>
#include<string.h>
#include<conio.h>
#include<time.h>

#define COM3       2
#define DATA_READY 0x100
#define SETTINGS ( 0xE0   |   0x03      |   0x00     | 0x00)
			  //baud 9600 | 8 data bits |  no parity | 1 stop bit
void main()
{
	int status;
	unsigned char out,in;
	char another,option;
	FILE *rfile,*wfile;
	int DONE=0,i=0,p=0,k=0;
	int Count=0;
   unsigned	char rcvdata[80];
   char sendrequest[21]="Start,SendRequest,End";
   time_t timer;
   struct tm *tblock;
	timer = time(NULL);
	 printf("\n");
	clrscr();
	bioscom(0, SETTINGS, COM3);
	printf("\n\n*********************************************************\n\n");
	printf("\t1. Send Request For Current Time Frame\n");
	printf("\t2. Escape");
	printf("\n\n**********************************************************\n\n");
	printf("Your Choice If you want,Otherwise wait for next Frame? :\n");


	rfile=fopen("RECEIVE.TXT","a");
	wfile=fopen("SEND.TXT","a");
	while (!DONE)
	{
		 status = bioscom(3, 0, COM3);

		if(status & DATA_READY)
		{
			if((out =(unsigned char)bioscom(2, 0, COM3)) != 0)// input message byte.
			{
				if((int)out==8 && Count>0)
				{
					Count=Count-1;
				}
				else
				{
					rcvdata[Count]=out; //Store char in buffer
					Count++;
				}
			}
			if(out==13)
			{
				fprintf(rfile,"\n");
				for(i=0;i<Count-1;i++)
					fprintf(rfile,"%c",rcvdata[i]);
				for(p=0;p<Count-1;p++)
					printf("%c",rcvdata[p]);
				printf("\n");
				Count=0;
			}
	   }
	   if (kbhit())   //character entered
	   {
			option=getche();

			switch(option)
				{
					case '1' :
						printf("\nSend Request:");
						 /* converts date/time to a structure */
						   tblock = localtime(&timer);
						  fprintf(wfile,"\nRequest sent at:%s:", asctime(tblock));
						for(k=0;k<21;k++)
						{
							bioscom(1,sendrequest[k],COM3);
							printf("%c",sendrequest[k]);
							fprintf(wfile,"%c",sendrequest[k]);
						}
						printf("\n");
						fprintf(wfile,"\n");
						break;
					case '2' :
					case 27 :
						DONE=1;
						break;
					default :
						printf("\nPress Correct option i.e. either 1 or 2\n");

				}
			}

	   }
	fclose(rfile);
	fclose(wfile);
}

Now after compiling it gives zero errors.
When I execute this program, it receives all things (hardware sent) but send nothing,not a single char.
Please tell me if anything wrong in my code

Thanks in advance

Recommended Answers

All 3 Replies

this board is for introductions only. Moved to the c++ board.

You are likely to be ignored, or written off as a loser, if you

  • cross-post to too many different newsgroups

Yup.

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.