Exemplo n.º 1
0
void SetMTX2Frequency(char *FrequencyString)
{
	float _mtx2comp;
	int _mtx2int;
	long _mtx2fractional;
	char _mtx2command[17];
	int fd;
	double Frequency;
	int i, pulses, wave_id;
	char *str;
	
	if (strlen(FrequencyString) < 3)
	{
		// Convert channel number to frequency
		Frequency = strtol(FrequencyString, NULL, 16) * 0.003125 + 434.05;
		printf("Channel %s\n", FrequencyString);
	}
	else
	{
		Frequency = atof(FrequencyString);
		printf("Frequency %s\n", FrequencyString);
	}

	printf("MTX2 Frequency to be set to %8.4fMHz\n", Frequency);

	_mtx2comp=(Frequency+0.0015)/6.5;
	_mtx2int=_mtx2comp;
	_mtx2fractional = ((_mtx2comp-_mtx2int)+1) * 524288;
	snprintf(_mtx2command,17,"@PRG_%02X%06lX\r",_mtx2int-1, _mtx2fractional);
	printf("MTX2 command  is %s\n", _mtx2command);
	
	if (gpioInitialise() < 0)
	{
		printf("pigpio initialisation failed.\n");
		return;
	}

	gpioSetMode(NTX2B_ENABLE_BCM, PI_OUTPUT);	
	
	gpioWaveAddNew();
	
	gpioWaveAddSerial(NTX2B_ENABLE_BCM, 9600, 8, 2, 0, strlen(_mtx2command), _mtx2command);
	
	wave_id = gpioWaveCreate();

	if (wave_id >= 0)
	{
		gpioWaveTxSend(wave_id, 0);

		while (gpioWaveTxBusy())
		{
			time_sleep(0.1);
		}
	}
	
	gpioTerminate();
}
Exemplo n.º 2
0
int main(int argc, char *argv[])
{
   int i, rest, g, wave_id, mode;
   gpioPulse_t pulse[2];
   int count[MAX_GPIOS];

   /* command line parameters */

   rest = initOpts(argc, argv);

   /* get the gpios to monitor */

   g_num_gpios = 0;

   for (i=rest; i<argc; i++)
   {
      g = atoi(argv[i]);
      if ((g>=0) && (g<32))
      {
         g_gpio[g_num_gpios++] = g;
         g_mask |= (1<<g);
      }
      else fatal(1, "%d is not a valid g_gpio number\n", g);
   }

   if (!g_num_gpios) fatal(1, "At least one gpio must be specified");

   printf("Monitoring gpios");
   for (i=0; i<g_num_gpios; i++) printf(" %d", g_gpio[i]);
   printf("\nSample rate %d micros, refresh rate %d deciseconds\n",
      g_opt_s, g_opt_r);

   gpioCfgClock(g_opt_s, 1, 1);

   if (gpioInitialise()<0) return 1;

   gpioWaveClear();

   pulse[0].gpioOn  = g_mask;
   pulse[0].gpioOff = 0;
   pulse[0].usDelay = g_opt_p;

   pulse[1].gpioOn  = 0;
   pulse[1].gpioOff = g_mask;
   pulse[1].usDelay = g_opt_p;

   gpioWaveAddGeneric(2, pulse);

   wave_id = gpioWaveCreate();

   /* monitor g_gpio level changes */

   gpioSetGetSamplesFunc(samples, g_mask);

   mode = PI_INPUT;

   if (g_opt_t)
   {
      gpioWaveTxSend(wave_id, PI_WAVE_MODE_REPEAT);
      mode = PI_OUTPUT;
   }

   for (i=0; i<g_num_gpios; i++) gpioSetMode(g_gpio[i], mode);

   while (1)
   {
      for (i=0; i<g_num_gpios; i++) count[i] = g_pulse_count[i];

      g_reset_counts = 1;

      for (i=0; i<g_num_gpios; i++)
      {
         printf(" %d=%d", g_gpio[i], count[i]);
      }

      printf("\n");

      gpioDelay(g_opt_r * 100000);
   }

   gpioTerminate();
}