Sign in Join

Live chat for Free Pascal, Lazarus, Delphi and every Pascal programmer.

Mailing lists / lazarus / 1999-07

Learning component building blocks

5 messages · 3 people ·

Reply by email Subscribe to this list Your subscription

Read-only archive. Use j and k to move between messages.

Payne Thomas E CNIN

This is way off the latest discussions, but I am trying things on the ground floor.
I am aiming at using FPC and LAZARUS in the real world when they are done, but at the moment I am trying to learn how to use the basic tools, at hopes to
contribute for everyones benefit.

My simple program below was attempting to mix serial comm with a GTK gui. I

can talk through the serial port OK by itself. I can get the buttons to work by
themselves. But when I add any gtk calls to the basic serial I/O it behaves

abnormally.

Anyone have a clue why gtk would interfere with the serial port?

Tom
_______________________________________________________________

      Program tdc1;
      Uses linux,glib,gdk,gtk,sysutils;
      Const myLine : String[80] = #128#00#03#21#12#164;
      Var myFD : Longint;
      procedure lcp_status_command( widget : pGtKWidget;
									data
: gpointer); cdecl;
      begin
          writeln('sending the command');
          if length(myLine)fdwrite (myFD,myLine[1],
Length(myLine)) then
            Writeln ('Error when writing to file !');
      end;
      procedure quit_program( widget : pGtkWidget; event : pGdkEvent;
                               data : gpointer); cdecl;
      begin
          fdClose(myFD);
          gtk_main_quit();
      end;
      var
        window, button, box1 : pGtkWidget;
      begin
        myFD:=fdOpen ('/dev/cua0',Open_WrOnly);  //from fdopen example in
FPC
        if myFD>0 then
          begin
          if length(myLine)fdwrite (myFD,myLine[1],
			Length(myLine)) then
            Writeln ('Error when writing to file !');
{         //Taken from GTK 1.2 tutorial, section 3.3, and converted to .pp
          //* This is called in all GTK applications. Arguments are
          // parsed
          // * from the command line and are returned to the
          // application. */
          gtk_init (@argc, @argv);
          //* Create a new window */
          window := gtk_window_new (GTK_WINDOW_TOPLEVEL);
          //* This is a new call, this just sets the title of our
          // * new window to "Hello Buttons!" */
          gtk_window_set_title (GTK_WINDOW (window), 'Hello Buttons!');
          //* Here we just set a handler for delete_event that
          // immediately
          // * exits GTK. */
          gtk_signal_connect (GTK_OBJECT (window), 'delete_event',
                              GTK_SIGNAL_FUNC (@quit_program), NULL);
          //* Sets the border width of the window. */
          gtk_container_set_border_width (GTK_CONTAINER (window), 10);
          //* We create a box to pack widgets into.  This is described
          // in detail
          // * in the "packing" section. The box is not really visible,
          // it
          // * is just used as a tool to arrange widgets. */
          box1 := gtk_hbox_new(FALSE, 0);
          //* Put the box into the main window. */
          gtk_container_add (GTK_CONTAINER (window), box1);
          //* Creates a new button with the label "Button 1". */
          button := gtk_button_new_with_label ('Button 1');
          //* Now when the button is clicked, we call the "callback"
          // function
          // * with a pointer to "button 1" as its argument */
          gtk_signal_connect (GTK_OBJECT (button), 'clicked',
                              GTK_SIGNAL_FUNC (@lcp_status_command),
                                                               Nil);
          //* Instead of gtk_container_add, we pack this button into the
          //  invisible
          //  * box, which has been packed into the window. */
          gtk_box_pack_start(GTK_BOX(box1), button, TRUE, TRUE, 0);
          //* Always remember this step, this tells GTK that our
          // preparation for
          // * this button is complete, and it can now be displayed. */
          gtk_widget_show(button);
          //* Do these same steps again to create a second button */
          button := gtk_button_new_with_label ('Button 2');
          //* Call the same callback function with a different argument,
          // * passing a pointer to "button 2" instead. */
          gtk_signal_connect (GTK_OBJECT (button), 'clicked',
                              GTK_SIGNAL_FUNC (@lcp_status_command),
                                                              Nil);
          gtk_box_pack_start(GTK_BOX(box1), button, TRUE, TRUE, 0);
          //* The order in which we show the buttons is not really
          //   important, but I
          // * recommend showing the window last, so it all pops up at
          // once. */
          gtk_widget_show(button);
          gtk_widget_show(box1);
          gtk_widget_show (window);
          //* Rest in gtk_main and wait for the fun to begin! */
          gtk_main ();
}
          end
   else
            writeln('Error opening File');
      end.

Reply by email

Payne Thomas E CNIN

I looked at it some more, and I apologize for my stupidity. I just checked it when the box I connected to does not respond, and no noise.

Sorry for the hasty question, and assumptions.

Tom

Show quoted text 208 lines
-----Original Message----- From: Payne Thomas E CNIN Sent: Monday, July 19, 1999 9:21 AM To: '' Subject: RE: [lazarus] Learning component building blocks I have looked at it some more and GTK isn't the issue. The box I am talking to is sending chars back but I only opened for write. With gtk fully commented out, I can add a repeat...until loop and get the chars on the line. I am not sure if it the way I am opening the port, the current setting of the port, or the fact that the other end of the connection is placing chars on the line. I think this is more of a down the road problem and I can let you guys continue the IDE. I have hopes of a Serial Comm Component, but maybe I can focus on something like TPanel. BTW I am still reading the GTK tutorial and converting the C (with alot of help from Michael [MVC] and Shane), how much interest would there be in a Pascal version of the Tutorial? Tom -----Original Message----- From: Baeseman, Cliff Sent: Monday, July 19, 1999 8:51 AM To: Subject: RE: [lazarus] Learning component building blocks What do you mean by abnormally... Cliff -----Original Message----- From: Payne Thomas E CNIN Sent: Sunday, July 18, 1999 4:36 PM To: Subject: [lazarus] Learning component building blocks This is way off the latest discussions, but I am trying things on the ground floor. I am aiming at using FPC and LAZARUS in the real world when they are done, but at the moment I am trying to learn how to use the basic tools, at hopes to contribute for everyones benefit. My simple program below was attempting to mix serial comm with a GTK gui. I can talk through the serial port OK by itself. I can get the buttons to work by themselves. But when I add any gtk calls to the basic serial I/O it behaves abnormally. Anyone have a clue why gtk would interfere with the serial port? Tom _______________________________________________________________ Program tdc1; Uses linux,glib,gdk,gtk,sysutils; Const myLine : String[80] = #128#00#03#21#12#164; Var myFD : Longint; procedure lcp_status_command( widget : pGtKWidget; data : gpointer); cdecl; begin writeln('sending the command'); if length(myLine)fdwrite (myFD,myLine[1], Length(myLine)) then Writeln ('Error when writing to file !'); end; procedure quit_program( widget : pGtkWidget; event : pGdkEvent; data : gpointer); cdecl; begin fdClose(myFD); gtk_main_quit(); end; var window, button, box1 : pGtkWidget; begin myFD:=fdOpen ('/dev/cua0',Open_WrOnly); //from fdopen example in FPC if myFD>0 then begin if length(myLine)fdwrite (myFD,myLine[1], Length(myLine)) then Writeln ('Error when writing to file !'); { //Taken from GTK 1.2 tutorial, section 3.3, and converted to .pp //* This is called in all GTK applications. Arguments are // parsed // * from the command line and are returned to the // application. */ gtk_init (@argc, @argv); //* Create a new window */ window := gtk_window_new (GTK_WINDOW_TOPLEVEL); //* This is a new call, this just sets the title of our // * new window to "Hello Buttons!" */ gtk_window_set_title (GTK_WINDOW (window), 'Hello Buttons!'); //* Here we just set a handler for delete_event that // immediately // * exits GTK. */ gtk_signal_connect (GTK_OBJECT (window), 'delete_event', GTK_SIGNAL_FUNC (@quit_program), NULL); //* Sets the border width of the window. */ gtk_container_set_border_width (GTK_CONTAINER (window), 10); //* We create a box to pack widgets into. This is described // in detail // * in the "packing" section. The box is not really visible, // it // * is just used as a tool to arrange widgets. */ box1 := gtk_hbox_new(FALSE, 0); //* Put the box into the main window. */ gtk_container_add (GTK_CONTAINER (window), box1); //* Creates a new button with the label "Button 1". */ button := gtk_button_new_with_label ('Button 1'); //* Now when the button is clicked, we call the "callback" // function // * with a pointer to "button 1" as its argument */ gtk_signal_connect (GTK_OBJECT (button), 'clicked', GTK_SIGNAL_FUNC (@lcp_status_command), Nil); //* Instead of gtk_container_add, we pack this button into the // invisible // * box, which has been packed into the window. */ gtk_box_pack_start(GTK_BOX(box1), button, TRUE, TRUE, 0); //* Always remember this step, this tells GTK that our // preparation for // * this button is complete, and it can now be displayed. */ gtk_widget_show(button); //* Do these same steps again to create a second button */ button := gtk_button_new_with_label ('Button 2'); //* Call the same callback function with a different argument, // * passing a pointer to "button 2" instead. */ gtk_signal_connect (GTK_OBJECT (button), 'clicked', GTK_SIGNAL_FUNC (@lcp_status_command), Nil); gtk_box_pack_start(GTK_BOX(box1), button, TRUE, TRUE, 0); //* The order in which we show the buttons is not really // important, but I // * recommend showing the window last, so it all pops up at // once. */ gtk_widget_show(button); gtk_widget_show(box1); gtk_widget_show (window); //* Rest in gtk_main and wait for the fun to begin! */ gtk_main (); } end else writeln('Error opening File'); end. _________________________________________________________________ To unsubscribe: mail with "unsubscribe" as the Subject archives at http://www.miraclec.com/list_archives/lazarus _________________________________________________________________ To unsubscribe: mail with "unsubscribe" as the Subject archives at http://www.miraclec.com/list_archives/lazarus

Reply by email

Baeseman, Cliff

What do you mean by abnormally...

Cliff

Earlier message 153 lines
-----Original Message----- From: Payne Thomas E CNIN Sent: Sunday, July 18, 1999 4:36 PM To: Subject: [lazarus] Learning component building blocks This is way off the latest discussions, but I am trying things on the ground floor. I am aiming at using FPC and LAZARUS in the real world when they are done, but at the moment I am trying to learn how to use the basic tools, at hopes to contribute for everyones benefit. My simple program below was attempting to mix serial comm with a GTK gui. I can talk through the serial port OK by itself. I can get the buttons to work by themselves. But when I add any gtk calls to the basic serial I/O it behaves abnormally. Anyone have a clue why gtk would interfere with the serial port? Tom _______________________________________________________________ Program tdc1; Uses linux,glib,gdk,gtk,sysutils; Const myLine : String[80] = #128#00#03#21#12#164; Var myFD : Longint; procedure lcp_status_command( widget : pGtKWidget; data : gpointer); cdecl; begin writeln('sending the command'); if length(myLine)fdwrite (myFD,myLine[1], Length(myLine)) then Writeln ('Error when writing to file !'); end; procedure quit_program( widget : pGtkWidget; event : pGdkEvent; data : gpointer); cdecl; begin fdClose(myFD); gtk_main_quit(); end; var window, button, box1 : pGtkWidget; begin myFD:=fdOpen ('/dev/cua0',Open_WrOnly); //from fdopen example in FPC if myFD>0 then begin if length(myLine)fdwrite (myFD,myLine[1], Length(myLine)) then Writeln ('Error when writing to file !'); { //Taken from GTK 1.2 tutorial, section 3.3, and converted to .pp //* This is called in all GTK applications. Arguments are // parsed // * from the command line and are returned to the // application. */ gtk_init (@argc, @argv); //* Create a new window */ window := gtk_window_new (GTK_WINDOW_TOPLEVEL); //* This is a new call, this just sets the title of our // * new window to "Hello Buttons!" */ gtk_window_set_title (GTK_WINDOW (window), 'Hello Buttons!'); //* Here we just set a handler for delete_event that // immediately // * exits GTK. */ gtk_signal_connect (GTK_OBJECT (window), 'delete_event', GTK_SIGNAL_FUNC (@quit_program), NULL); //* Sets the border width of the window. */ gtk_container_set_border_width (GTK_CONTAINER (window), 10); //* We create a box to pack widgets into. This is described // in detail // * in the "packing" section. The box is not really visible, // it // * is just used as a tool to arrange widgets. */ box1 := gtk_hbox_new(FALSE, 0); //* Put the box into the main window. */ gtk_container_add (GTK_CONTAINER (window), box1); //* Creates a new button with the label "Button 1". */ button := gtk_button_new_with_label ('Button 1'); //* Now when the button is clicked, we call the "callback" // function // * with a pointer to "button 1" as its argument */ gtk_signal_connect (GTK_OBJECT (button), 'clicked', GTK_SIGNAL_FUNC (@lcp_status_command), Nil); //* Instead of gtk_container_add, we pack this button into the // invisible // * box, which has been packed into the window. */ gtk_box_pack_start(GTK_BOX(box1), button, TRUE, TRUE, 0); //* Always remember this step, this tells GTK that our // preparation for // * this button is complete, and it can now be displayed. */ gtk_widget_show(button); //* Do these same steps again to create a second button */ button := gtk_button_new_with_label ('Button 2'); //* Call the same callback function with a different argument, // * passing a pointer to "button 2" instead. */ gtk_signal_connect (GTK_OBJECT (button), 'clicked', GTK_SIGNAL_FUNC (@lcp_status_command), Nil); gtk_box_pack_start(GTK_BOX(box1), button, TRUE, TRUE, 0); //* The order in which we show the buttons is not really // important, but I // * recommend showing the window last, so it all pops up at // once. */ gtk_widget_show(button); gtk_widget_show(box1); gtk_widget_show (window); //* Rest in gtk_main and wait for the fun to begin! */ gtk_main (); } end else writeln('Error opening File'); end. _________________________________________________________________ To unsubscribe: mail with "unsubscribe" as the Subject archives at http://www.miraclec.com/list_archives/lazarus

Reply by email

Michael Van Canneyt
to Payne Thomas E CNIN: I have looked at it some more and GTK isn't the issue. The box I am talking to is…
Payne Thomas E CNIN wrote 8 lines
I have looked at it some more and GTK isn't the issue. The box I am talking to is sending chars back but I only opened for write. With gtk fully commented out, I can add a repeat...until loop and get the chars on the line. I am not sure if it the way I am opening the port, the current setting of the port, or the fact that the other end of the connection is placing chars on the line. I think this is more of a down the road problem and I can let you guys continue the IDE. I have hopes of a Serial Comm Component, but maybe I can focus on something like TPanel.

There is a serial comm example (serial.pp) in the linuxex directory of the documentation sources. It shows how to do what you want.

BTW I am still reading the GTK tutorial and converting the C (with alot of help from Michael [MVC] and Shane), how much interest would there be in a Pascal version of the Tutorial?

Please, send all examples to me or Peter Vreman, we will include them in the examples directory in the GTK package !!

Michael.

Reply by email

Payne Thomas E CNIN

I have looked at it some more and GTK isn't the issue. The box I am talking to is sending chars back but I only opened for write. With gtk fully commented out, I can add a repeat...until loop and get the chars on the line. I am not sure if it the way I am opening the port, the current setting of the port, or the fact that the other end of the connection is placing chars on the line. I think this is more of a down the road problem and I can let you guys continue the IDE. I have hopes of a Serial Comm Component, but maybe I can focus on something like TPanel.

BTW I am still reading the GTK tutorial and converting the C (with alot of help from Michael [MVC] and Shane), how much interest would there be in a Pascal version of the Tutorial?

Tom

Show quoted text 172 lines
-----Original Message----- From: Baeseman, Cliff Sent: Monday, July 19, 1999 8:51 AM To: Subject: RE: [lazarus] Learning component building blocks What do you mean by abnormally... Cliff -----Original Message----- From: Payne Thomas E CNIN Sent: Sunday, July 18, 1999 4:36 PM To: Subject: [lazarus] Learning component building blocks This is way off the latest discussions, but I am trying things on the ground floor. I am aiming at using FPC and LAZARUS in the real world when they are done, but at the moment I am trying to learn how to use the basic tools, at hopes to contribute for everyones benefit. My simple program below was attempting to mix serial comm with a GTK gui. I can talk through the serial port OK by itself. I can get the buttons to work by themselves. But when I add any gtk calls to the basic serial I/O it behaves abnormally. Anyone have a clue why gtk would interfere with the serial port? Tom _______________________________________________________________ Program tdc1; Uses linux,glib,gdk,gtk,sysutils; Const myLine : String[80] = #128#00#03#21#12#164; Var myFD : Longint; procedure lcp_status_command( widget : pGtKWidget; data : gpointer); cdecl; begin writeln('sending the command'); if length(myLine)fdwrite (myFD,myLine[1], Length(myLine)) then Writeln ('Error when writing to file !'); end; procedure quit_program( widget : pGtkWidget; event : pGdkEvent; data : gpointer); cdecl; begin fdClose(myFD); gtk_main_quit(); end; var window, button, box1 : pGtkWidget; begin myFD:=fdOpen ('/dev/cua0',Open_WrOnly); //from fdopen example in FPC if myFD>0 then begin if length(myLine)fdwrite (myFD,myLine[1], Length(myLine)) then Writeln ('Error when writing to file !'); { //Taken from GTK 1.2 tutorial, section 3.3, and converted to .pp //* This is called in all GTK applications. Arguments are // parsed // * from the command line and are returned to the // application. */ gtk_init (@argc, @argv); //* Create a new window */ window := gtk_window_new (GTK_WINDOW_TOPLEVEL); //* This is a new call, this just sets the title of our // * new window to "Hello Buttons!" */ gtk_window_set_title (GTK_WINDOW (window), 'Hello Buttons!'); //* Here we just set a handler for delete_event that // immediately // * exits GTK. */ gtk_signal_connect (GTK_OBJECT (window), 'delete_event', GTK_SIGNAL_FUNC (@quit_program), NULL); //* Sets the border width of the window. */ gtk_container_set_border_width (GTK_CONTAINER (window), 10); //* We create a box to pack widgets into. This is described // in detail // * in the "packing" section. The box is not really visible, // it // * is just used as a tool to arrange widgets. */ box1 := gtk_hbox_new(FALSE, 0); //* Put the box into the main window. */ gtk_container_add (GTK_CONTAINER (window), box1); //* Creates a new button with the label "Button 1". */ button := gtk_button_new_with_label ('Button 1'); //* Now when the button is clicked, we call the "callback" // function // * with a pointer to "button 1" as its argument */ gtk_signal_connect (GTK_OBJECT (button), 'clicked', GTK_SIGNAL_FUNC (@lcp_status_command), Nil); //* Instead of gtk_container_add, we pack this button into the // invisible // * box, which has been packed into the window. */ gtk_box_pack_start(GTK_BOX(box1), button, TRUE, TRUE, 0); //* Always remember this step, this tells GTK that our // preparation for // * this button is complete, and it can now be displayed. */ gtk_widget_show(button); //* Do these same steps again to create a second button */ button := gtk_button_new_with_label ('Button 2'); //* Call the same callback function with a different argument, // * passing a pointer to "button 2" instead. */ gtk_signal_connect (GTK_OBJECT (button), 'clicked', GTK_SIGNAL_FUNC (@lcp_status_command), Nil); gtk_box_pack_start(GTK_BOX(box1), button, TRUE, TRUE, 0); //* The order in which we show the buttons is not really // important, but I // * recommend showing the window last, so it all pops up at // once. */ gtk_widget_show(button); gtk_widget_show(box1); gtk_widget_show (window); //* Rest in gtk_main and wait for the fun to begin! */ gtk_main (); } end else writeln('Error opening File'); end. _________________________________________________________________ To unsubscribe: mail with "unsubscribe" as the Subject archives at http://www.miraclec.com/list_archives/lazarus _________________________________________________________________ To unsubscribe: mail with "unsubscribe" as the Subject archives at http://www.miraclec.com/list_archives/lazarus

Reply by email