GIDForums  

Go Back   GIDForums > Computer Programming Forums > C++ Forum
User Name
Password
Register FAQ Members List Calendar Search Today's Posts Mark Forums Read

 
 
Thread Tools Search this Thread Rate Thread
  #1  
Old 03-Mar-2004, 01:42
cameron cameron is offline
New Member
 
Join Date: Feb 2004
Posts: 11
cameron is on a distinguished road

some I/O problems...again


i've posted for help before...but i still cant seem to solve it
im totally devastated!

ok this is wat i did..
when i program my codes in an individual file, it works with no problem. here it is: (i dont know how to post it in c/c++ code. hope this is rite)

CPP / C++ / C Code:
#include <fstream.h>
#include <iostream.h>

int main()
{
	const int max = 10;
	char string[max];
	cout << "Enter a String no longer than " << max-1 << " characters\n";
	cin.width(max);
	ofstream testFile("example.txt", ios::app);

	while (!(cin>>string).eof())
	{
		cout << "your string:" << string << "\n";	
		testFile << string << "\n";
		cout << "next string:" ;
		cin.width(max);
	}

	testFile.close();

	return 0;
}

it works the way i want it...
however when i integrate it into another program...
i get all these errors....
i amended the ofstream with a 'std' in front of it as it claimed it is an undeclared identifier

Compiling...
error C2057: expected constant expression
error C2466: cannot allocate an array of constant size 0
warning C4305: 'initializing' : truncation from 'const double ' to 'float '
warning C4244: '=' : conversion from 'double ' to 'float ', possible loss of data
warning C4305: '=' : truncation from 'const double ' to 'float '
warning C4244: '=' : conversion from 'double ' to 'float ', possible loss of data
error C2065: 'cout' : undeclared identifier
error C2297: '<<' : illegal, right operand has type 'char [31]'
error C2065: 'cin' : undeclared identifier
error C2224: left of '.width' must have struct/union type
error C2143: syntax error : missing ';' before ':'
error C2297: '>>' : illegal, right operand has type 'char []'
error C2297: '<<' : illegal, right operand has type 'char [13]'
error C2065: 'testFile' : undeclared identifier
error C2297: '<<' : illegal, right operand has type 'char []'
error C2297: '<<' : illegal, right operand has type 'char [13]'
error C2224: left of '.width' must have struct/union type
error C2224: left of '.close' must have struct/union type
warning C4244: '=' : conversion from 'short ' to 'unsigned char ', possible loss of data
warning C4244: '=' : conversion from 'double ' to 'float ', possible loss of data
warning C4013: 'kbhit' undefined; assuming extern returning int
Error executing cl.exe.

BNSAMPLE.OBJ - 14 error(s), 7 warning(s)

this is my codes....
very long though...sorry abt it...i'll juz copy the main method

CPP / C++ / C Code:
#include <stdio.h> 
#include <stdlib.h>
#include <math.h>
#include <time.h>
#include <string.h>
#include "birdnet.h"
#include "sockport.h"
#include <fstream.h>
#include <iostream.h>

#ifdef _WIN32
#include <windows.h> 
HANDLE hStdout, hStdin; 
CONSOLE_SCREEN_BUFFER_INFO csbiInfo; 
#else

#endif


#define TRUE		1	/* true value		*/
#define FALSE		0	/* false value		*/



#define TCP_PORT	6000	// moitonstar tcp port
#define UDP_PORT	5000	// motionstar udp port





/* table to convert format to data format byte */
/* required in setup */
short rtbl[16] = {0x00,0x31,0x32,0x93,0x64,0xc5,0,0x47,0x78,0,0,0,0,0,-1,-1};

char *formattxt[16] = { "No Data",
						"Position",
						"Angles",
						"Matrix",
						"Position/Angle",
						"Position/Matrix",
						"No Data",
						"Quaternion",
						"Position/Quaternion",
						"No Data",
						"No Data",
						"No Data",
						"No Data",
						"No Data",
						"No Data",
						"No Data"};
	
	extern int errno;
	
	/* server socket address */
	struct sockaddr_in client,server,broadcast;
	
	int 	TCPflag = TRUE;		/* TCP or UDP */
	int 	birdVerbose;		// message verbosity level
	short 	sequence = 0;
	
	float  posScale;		/* scaling factor for positon data */
	/* = inches returned from birdnet / 32767; */
	#define angScale 180./32767.
	
	/* save stack space by making global */
	struct BN_PACKET 
	{
		struct BN_HEADER header;
		unsigned char data[2048];			/* undifferentiated packet data */
	};
	
	struct BN_PACKET response;
	
	char 	inbuf[80];
	int 	broadcastFlag = FALSE;
	
	const int max = 10;
	char string[max];

	
	int get_status_fbb(int cmdSocket,int addr,struct BN_BIRD_STATUS **bird);
	int set_status_fbb(int cmdSocket,int addr,struct BN_BIRD_STATUS *bird);
	int run_continuous(int cmdSocket,int dataSocket);
	int send_wakeup(int cmdSocket);
	int send_shutdown(int cmdSocket);
	int single_shot(int cmdSocket,int dataSocket);
	int get_status_all(int cmdSocket,struct BN_SYSTEM_STATUS **sys);
	int set_status_all(int cmdSocket,struct BN_SYSTEM_STATUS *sys);
	int tcpSocket_open(char *ipaddr);
	int udpSocket_open(char *ipaddr);
	int broadcastSocket_open(char *ipaddr);
	int parse_data(struct BN_PACKET *pkt);
	int send_command(int cmdSocket,int cmd,int xtype);
	int send_status(int cmdSocket,int xtype,char *data,int size);
	int get_response(int cmdSocket,int rsp);
	void parse_position(char *data);
	void parse_angles(char *data);
	void parse_matrix(char *data);
	void parse_quaternion(char *data);
	void parse_serial(char *data, int n);
	void print_header(struct BN_HEADER *header);
	void print_help(void);
	int chkkbhit(void);
	void clear_screen(void);
	void set_cursorxy(int x, int y);
	
	int main(int argc, char *argv[])
	{
		int		birdFormat = BN_POSANG;
		int 	birdsRequired = BN_MAX_ADDR;      
		float	birdRate = 86.1;
		int 	singleShots = 0;
		int		reportRate = 1;
		int 	i;
		char	ip_address[16] = "192.9.200.51";
		char	broadcast_address[16] = "192.9.200.255";
		char 	buf[10];
		int 	nDevices;
		struct 	BN_SYSTEM_STATUS *sys;
		struct 	BN_BIRD_STATUS *bird;
		char 	*cptr;
		int		cmdSocket,broadcastSocket;
		int 	receiveOnly = FALSE;
		int		on = 1;
		
		#ifdef _WIN32
		WORD wVersionRequested;
		WSADATA wsaData;
		int err;
		
		wVersionRequested = MAKEWORD( 2, 0 ); 
		err = WSAStartup( wVersionRequested, &wsaData );
		if ( err != 0 ) 
		{
			/* Tell the user that we couldn't find a usable */
			/* WinSock DLL.                                  */
			return(-1);
		}
		/* Confirm that the WinSock DLL supports 2.0.*/
		/* Note that if the DLL supports versions greater    */
		/* than 2.0 in addition to 2.0, it will still return */
		/* 2.0 in wVersion since that is the version we      */
		/* requested.                                        */
		
		if ( LOBYTE( wsaData.wVersion ) != 2 || HIBYTE( wsaData.wVersion ) != 0 )
		{
			/* Tell the user that we couldn't find a usable */
			/* WinSock DLL.                                  */
			WSACleanup( );
			return(-1); 
		}
		
		/* The WinSock DLL is acceptable. Proceed. */
		
		hStdin = GetStdHandle(STD_INPUT_HANDLE); 
		hStdout = GetStdHandle(STD_OUTPUT_HANDLE); 
		if (hStdin == INVALID_HANDLE_VALUE || hStdout == INVALID_HANDLE_VALUE) 
		printf("GetStdHandle"); 
		
		
		/* Save the current text colors. */ 
		
		if (! GetConsoleScreenBufferInfo(hStdout, &csbiInfo)) 
		printf("GetConsoleScreenBufferInfo"); 	
		
		#else
		
		#endif 
		if ((cptr = getenv("BN_IPADDR")) != NULL)
		strcpy(ip_address,cptr);
		if ((cptr = getenv("BN_PROTOCOL")) != NULL)
		if (strcmp(cptr,"UDP") == 0)
		TCPflag = FALSE;
		if ((cptr = getenv("BN_VERBOSE")) != NULL)
		birdVerbose = atoi(cptr);
		if ((cptr = getenv("BN_RATE")) != NULL)
		birdRate = atof(cptr);
		if ((cptr = getenv("BN_DATA")) != NULL)
		birdFormat = atoi(cptr);

		/* process command line switches */
		for(i=1; i < argc ; i++)
		{
			cptr = *++argv;
			if (*cptr++ != '-')
			{
				printf("Bad Command Line Option - %c\n",*--cptr);
				print_help();
				exit(-1);
			}
			switch (*cptr++) 
			{
				case 'h':
				return(0);
				case 'i':
				strcpy(ip_address,cptr);
				break;
				case 'p':
				if (strcmp(cptr,"UDP") == 0)
				TCPflag = FALSE;
				break;
				case 'B':
				// Broadcast Receive only
				receiveOnly = TRUE;
				// need to make assumption about scaling
				posScale = 144./32767.;
				case 'b':
				broadcastFlag = TRUE;
				TCPflag = FALSE;  //if broadcast=>UDP
				strcpy(broadcast_address,cptr);
				break;
				case 'v':
				birdVerbose = atoi(cptr);
				break;
				case 'm':
				birdRate = atof(cptr);
				break;
				case 'r':
				reportRate = atoi(cptr);
				break;
				case 'f':
				birdFormat = atoi(cptr);
				break;
				case 'n':
				birdsRequired = atoi(cptr);
				break;
				case 's':
				singleShots = atoi(cptr);
				if(singleShots<0) singleShots = 0;
				printf("\nSINGLE SHOTS REQUESTED = %d", singleShots);
				break;
				default:
				printf("Bad Command Line Option - %c\n",*--cptr);
				print_help();
				exit(-1);
				break;
			}
		}
		// bounds check user input
		if(birdRate>144) birdRate=144;
		if(birdRate<20) birdRate=20;
		if (reportRate > 255) reportRate = 255;
		if (reportRate < 1) reportRate = 1;
		if (birdFormat < 0) birdFormat = 0;
		if (birdFormat > 15) birdFormat = 15;
		
		
		// Print out program settings

		printf("IP ADDRESS of SERVER = %s\n", ip_address);
		if (TCPflag)
		printf("TCPIP Protocol\n");
		else
		printf("UDP Protocol\n");
		printf("BIRD RATE = %f\n", birdRate);
		printf("REPORT RATE = %d\n", reportRate);
		
		printf("BIRD FORMAT = %s\n", formattxt[birdFormat]);
		printf("NUMBER OF BIRDS = %d\n\n", birdsRequired);
		
		/////////////////////////////////////////////////////////////////////
		//////////////////////////////MY CODES///////////////////////////////
		/////////////////////////////////////////////////////////////////////
		cout << "Enter a String no longer than " << max-1 << " characters\n";
		cin.width(max);
		std::ofstream testFile("example.txt", ios::app);
		
		while (!(cin>>string).eof())
		{
			cout << "your string:" << string << '\n';	
			testFile << string << '\n';
			cout << "next string:" ;
			cin.width(max);
		}

		testFile.close();
		/////////////////////////////////////////////////////////////////////

		
		if (TCPflag)
		cmdSocket = tcpSocket_open(ip_address);
		else
		cmdSocket = udpSocket_open(ip_address);
		//	cmdSocket = socket_open(ip_address); 
		if (!cmdSocket)
		//	if (!socket_open(ip_address,broadcast_address))
		{
			print_help();  // try to be useful
			return(-1);
		}
		if (broadcastFlag)
		{
			printf("BROADCAST IP = %s\n",broadcast_address);
			broadcastSocket = broadcastSocket_open(broadcast_address);
			if (!broadcastSocket)
			//	if (!socket_open(ip_address,broadcast_address))
			{
				print_help();  // try to be useful
				return(-1);
			}
			else
			{
				i = setsockopt(broadcastSocket, SOL_SOCKET, SO_BROADCAST, (void *)&on, sizeof(on));
				if(i<0)
				{
					perror("Broadcast");
					exit(-1);
				}
			}
		}
		
		
		// if receive only then just loop getting and parsing data
		if (receiveOnly)
		{
			while(TRUE)
			{
				if (!get_response(broadcastSocket,DATA_PACKET))
				return(FALSE);
				parse_data(&response);
			}
		}
		
		/* send the wake up call */
		if (!send_wakeup(cmdSocket))
		return(-1);
		
		/* get the system status */
		if (!get_status_all(cmdSocket,&sys))
		return(-1);
		
		/* set measurement rate requested */
		
		sprintf(buf,"%06.0f",birdRate * 1000.);
		strncpy(sys->rate,buf,6);
		
		printf("Chassis# = %d, \n", sys->chassisID);
		printf("Number of devices in this chassis = %d, \n", sys->chassisDevices);
		printf("First flock address in this chassis = %d, \n", sys->firstAddress);
		printf("SERVER Software Version = %d.%d\n",sys->softRev[0],sys->softRev[1]);
		printf("\n\n");
		
		nDevices = sys->chassisDevices;  
		
		/* send the system setup */
		if (!set_status_all(cmdSocket,sys))
		return(-1);
		
		
		
		/* for 1 to n flock boards 			*/
		/* get the individual bird status 		*/
		/* modify the appropriate contents 		*/
		/* send the individual bird status packet back 	*/
		
		for(i = 2; i <= nDevices; i++) 
		{
			/* get the status of an individual bird */
			get_status_fbb(cmdSocket,i,&bird);
			
			/* change the data format to something new for all birds */
			if(i <= birdsRequired+1)
			bird->header.dataFormat = rtbl[birdFormat];
			else
			bird->header.dataFormat = 0;         /* no data */
			
			/* set new report rate for all birds */
			bird->header.reportRate = reportRate;
			bird->header.setup |= BN_FLOCK_APPENDBUT;
			
			posScale = (float)ntohs(bird->header.scaling) / 32767.;
			
			/* set the status of an individual bird */
			if (!set_status_fbb(cmdSocket,i,bird))
			return(-1);
		}
		/* get data from birds */
		
		if(singleShots==0)
		{
			if (broadcastFlag)
			run_continuous(cmdSocket,broadcastSocket);
			else
			run_continuous(cmdSocket,cmdSocket);
		}
		else
		{
			for(i = 0; i < singleShots; i++)
			if (broadcastFlag)
			single_shot(cmdSocket,broadcastSocket);
			else
			single_shot(cmdSocket,cmdSocket);
		}		
		send_shutdown(cmdSocket);
		#ifdef WIN32
		WSACleanup( );
		#endif

		return(0);
	}

should i do it in an individual file and put it as a method?
n in this file, i will call the method?
tt's wat i usually do in my java programming
Last edited by dsmith : 03-Mar-2004 at 07:19. Reason: Changed code tags to c tags
  #2  
Old 03-Mar-2004, 07:27
dsmith's Avatar
dsmith dsmith is offline
Senior Member
 
Join Date: Jan 2004
Location: Utah, USA
Posts: 1,351
dsmith is a glorious beacon of lightdsmith is a glorious beacon of lightdsmith is a glorious beacon of lightdsmith is a glorious beacon of lightdsmith is a glorious beacon of light
Hi Cameron.

One hint first, instead of using code tags use c tags to highlight your c/c++ code properly.

Can you clarify what you mean when you say integrating? Are you linking these two files together? If so, are you changing the main on one of them to something else? If you can give us more info, we may be able to figure out what is happening.
  #3  
Old 03-Mar-2004, 10:57
davekw7x davekw7x is offline
Outstanding Member
 
Join Date: Feb 2004
Location: Left Coast, USA
Posts: 4,706
davekw7x is a splendid one to beholddavekw7x is a splendid one to beholddavekw7x is a splendid one to beholddavekw7x is a splendid one to beholddavekw7x is a splendid one to beholddavekw7x is a splendid one to beholddavekw7x is a splendid one to behold
Since we don't have your header files birdnet.h and sockport.h,
it's not easy for us to try a compilation to see what's happening.

Here's a suggestion:

First comment out all of your new stuff ( the "///MY CODES///" section ),
and see if the big program compiles.

If this works OK, then put something simple in place of your stuff,
like:
CPP / C++ / C Code:
cout << "test of cout" << endl;

and see what happens.


Dave

If you can't see what's happening, let us know.
  #4  
Old 03-Mar-2004, 21:39
cameron cameron is offline
New Member
 
Join Date: Feb 2004
Posts: 11
cameron is on a distinguished road
well...thanks guys...my supervisor juz told me i dont have to use this whole I/O thingie...so guess i've been wasting both u guys time....once again thanks....
 
 

Recent GIDBlogObservations of Iraq by crystalattice

Thread Tools Search this Thread
Search this Thread:

Advanced Search
Rate This Thread
Rate This Thread:

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Forum Jump

Similar Threads
Thread Thread Starter Forum Replies Last Post
cd burner problems ringmaster Computer Hardware Forum 7 25-Jul-2006 02:34
Chaintech Geforce 5600 FX problems bartster74 Computer Hardware Forum 8 04-May-2004 13:16
CD Burner Problems Joe9995 Computer Hardware Forum 0 07-Feb-2004 10:47
Apache - problems using PHP outside the intranet ooandioo Apache Web Server Forum 6 04-Feb-2004 09:27
CD Burner problems dan_wood Computer Hardware Forum 3 27-Nov-2003 19:12

Network Sites: GIDNetwork · GIDWebHosts · GIDSearch · Learning Journal by J de Silva, The

All times are GMT -6. The time now is 10:56.


vBulletin, Copyright © 2000 - 2008, Jelsoft Enterprises Ltd.