Ejemplo n.º 1
0
//OpenPort-------------------------------
//Initialize COM port, make stepper motor's current position home (0)
//Input: None
//Ouput: RS232 error code
int zStepperDriver::OpenPort()
{
	int RS232Error;
	char out[5];
	char ptName[4];

	//Initialize comm port
	CloseCom(prevPort);
	
	sprintf(ptName,"COM%i ",port);
	
	RS232Error = OpenComConfig (port, ptName, 9600, 0, 8, 1, 512, 512);
	SetXMode (port, 0);
	SetCTSMode (port, 1); 
	SetComTime (port, 10);
	
	sprintf(out, "HM0\r");
	ComWrt(port, out, strlen(out));

	//set previous port as newly opened port
	prevPort = port;
	
	return RS232Error;
}
Ejemplo n.º 2
0
Archivo: rkc.c Proyecto: wft999/25m
int RKC_CommData ( int _ACT, int _ID, double *_Val)
{
	int rLop = 0;
	int RTNval = 0;
	int BuffLEN = 0;
	char Buff[128]={0};
	char BBC = 0x00;
	char dTRN[64] = {0};
	static int Rs232Err = 0, NullPort = 0;
	
	switch (_ACT)
	{
		case Config:
			CloseCom(rkc.COM);
			if (Rs232Err = ReturnRS232Err (), Rs232Err < 0)
				return  Rs232Err;
			
			OpenComConfig(rkc.COM, "", rkc.Baud, rkc.Pari, rkc.Dbit, rkc.Sbit, 512, 512);
			if (Rs232Err = ReturnRS232Err (), Rs232Err < 0)
			{
				NullPort = 1;
				return  Rs232Err;
			}
			
			SetCTSMode(rkc.COM, rkc.Flc);
			if (Rs232Err = ReturnRS232Err (), Rs232Err < 0)
				return  Rs232Err;

			SetComTime(rkc.COM, rkc.Tout);
			if (Rs232Err = ReturnRS232Err (), Rs232Err < 0)
				return  Rs232Err;
			
			NullPort = 0;
		break;
			
		case getTP:
			
			Fmt(Buff, "%c%i[w2p0]%s[w2]%c", _EOT, (_ID & 0xFF), "M1", _ENQ);
			// MessagePopup("getTP",Buff);  //DJ_Added_0502KB_12_57
			
			break;
											   
		case getSP:
			Fmt(Buff, "%c%i[w2p0]%s[w2]%c", _EOT, (_ID & 0xFF), "S1", _ENQ);
		break;

		case getAL1:
			Fmt(Buff, "%c%i[w2p0]%s[w2]%c", _EOT, (_ID & 0xFF), "A1", _ENQ);
		break;

		case getAL2:
			Fmt(Buff, "%c%i[w2p0]%s[w2]%c", _EOT, (_ID & 0xFF), "A2", _ENQ);
		break;

		case getAT:
			Fmt(Buff, "%c%i[w2p0]%s[w2]%c", _EOT, (_ID & 0xFF), "G1", _ENQ);
		break;

		case getST:
			Fmt(Buff, "%c%i[w2p0]%s[w2]%c", _EOT, (_ID & 0xFF), "G2", _ENQ);
		break;

		case setRUN:
			Fmt(Buff, "%c%i[w2p0]%c%s[w2]%f[p1]%c", _EOT, (_ID & 0xFF), _STX, "SR", *_Val, _ETX);
		break;

		case setSP:
			Fmt(Buff, "%c%i[w2p0]%c%s[w2]%f[p1]%c", _EOT, (_ID & 0xFF), _STX, "S1", *_Val, _ETX);
		break;

		case setAL1:
			Fmt(Buff, "%c%i[w2p0]%c%s[w2]%f[p1]%c", _EOT, (_ID & 0xFF), _STX, "A1", *_Val, _ETX);
		break;

		case setAL2:
			Fmt(Buff, "%c%i[w2p0]%c%s[w2]%f[p1]%c", _EOT, (_ID & 0xFF), _STX, "A2", *_Val, _ETX);
		break;

		case setAT:
			Fmt(Buff, "%c%i[w2p0]%c%s[w2]%f[p1]%c", _EOT, (_ID & 0xFF), _STX, "G1", *_Val, _ETX);
		break;

		case setST:
			Fmt(Buff, "%c%i[w2p0]%c%s[w2]%f[p1]%c", _EOT, (_ID & 0xFF), _STX, "G2", *_Val, _ETX);
		break;
			
		case setPB:
			Fmt(Buff, "%c%i[w2p0]%c%s[w2]%f[p1]%c", _EOT, (_ID & 0xFF), _STX, "PB", *_Val, _ETX);
		break;
	}

	if (NullPort)
	{
		*_Val = 0.00;
	}
	
	// Command Transfer Process
	if ((_ACT > 0x1F) && (NullPort == 0))
	{
		// ========================================================= [ Set RKC Data ]
		// Flush Out Queue
		FlushOutQ (rkc.COM);
		Delay(0.5);
		
		// Count Buffer Length
		BuffLEN = StringLength (Buff);
		// Calc BBC
		BBC = 0x00;
		for (rLop=4; rLop < BuffLEN; rLop++)	BBC ^= Buff[rLop];
		// Append BBC
		Fmt ( Buff, "%s[a]<%c", BBC); 
		BuffLEN +=1;
		// Sending Command
		ComWrt ( rkc.COM, Buff, BuffLEN);
		
		// Flush In Queue	
		FlushInQ (rkc.COM);
		Delay(0.5);
		ComRd (rkc.COM, dTRN, 1);

		if (dTRN[0] == 0x06)
			RTNval =   0;	// Sending OK
		else if (dTRN[0] == 0x15)
			RTNval = -10;	// Sending Lost
		else	
			RTNval =  -1;	// Connect Lost
	} 
	else if ((_ACT > 0x0F) && (NullPort == 0))
	{
		// ========================================================= [ Get RKC Data ]
		// Flush OUT Queue	
		FlushOutQ (rkc.COM);
		Delay(0.5);

		// Send CMD
		ComWrt ( rkc.COM, Buff, 6);
		
		// Flush IN Queue
		FlushInQ (rkc.COM);
		Delay(0.5);

		// Receive CMD
		dTRN[0] = 0x00;
		ComRd (rkc.COM, dTRN, 11);
		Rs232Err = ReturnRS232Err();
		if (ReturnRS232Err() == 0)
			Scan (dTRN ,"%s[i5]>%f", _Val);


		Delay(0.5);
		Fmt ( Buff, "%c%c", _EOT, 0x00);
		ComWrt (rkc.COM, Buff, 1);	
	}
	return RTNval;
}