boonC Ответов: 1

Как избавиться от "wiringpinewnode: pin 120 перекрывается с существующим определением" ?


у меня есть проект raspberry pi о создании gtk со значением датчика. программа, которую я в настоящее время делаю, когда запускаю ее, может поддерживать только 1 секунду, а затем автоматический выход и показывает "wiringPiNewNode: Pin 120 перекрывается с существующим определением" . есть ли кто-нибудь, кто знает, как решить эту проблему, что о перекрытиях булавочных чего-то?

код, который я сейчас делаю..
#include <stdio.h>
#include <wiringPi.h>
#include <pcf8591.h>
#include <math.h>
#include <gtk/gtk.h>
#include <string.h>
#include <glib.h>

#define		PCF     120
#define		DOpin	0

static gboolean
on_timeout (gpointer user_data)
{
	int analogVal;
	GtkLabel *label = GTK_LABEL (user_data);
	
	if(wiringPiSetup() == -1){
		printf("setup wiringPi failed !");
		return 1;
	}
	// Setup pcf8591 on base pin 120, and address 0x48
	pcf8591Setup(PCF, 0x48);

	while(1) // loop forever
	{
		analogVal = analogRead(PCF + 0);
		gchar *text = g_strdup_printf("Value: %d\n", analogVal);
		gtk_label_set_label (label, text);
		g_free (text);

		// delay (200);
		return G_SOURCE_CONTINUE;
		
	}
	return G_SOURCE_CONTINUE;
}


int main (int argc, char **argv)
{
  gtk_init (&argc, &argv);

  GtkWidget *label = gtk_label_new ("Value = ...");
  g_timeout_add (1000 /* milliseconds */, on_timeout, label);

  GtkWidget *window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
  gtk_container_add (GTK_CONTAINER (window), label);
  g_signal_connect (window, "destroy", G_CALLBACK (gtk_main_quit), NULL);
  gtk_widget_show_all (window);

  gtk_main ();

  return 0;
}


Что я уже пробовал:

программа способна компилироваться и запускаться, после запуска она может поддерживать только 1 секунду, а затем выходить и показывать "wiringPiNewNode: Pin 120 перекрывается с существующим определением". я думаю, что просто хочу избавиться от этой проблемы.

1 Ответов

Рейтинг:
1

phil.o

Первое, что нужно было бы сделать, это удалить return G_SOURCE_CONTINUE; линия изнутри петли. Есть inconditional return оператор внутри цикла полностью разрушает цель самого цикла.