He hecho un programita con Lazarus, con el control TOpenGlControl, dibujando dos vias que se mueven en pantalla ciclicamente, y dos cursores que manejo con dos potenciometros conectados a un Arduino, que se comunica con el ordenador via USB con una entrada serie virtual. El programa es una imitaci�n de los que utilizan en las empresas de certificado medico en espa�a para dar el certificado para renovar el carnet de conducir.
Es pqrq mi hermano que esta mayor, jeje.
El problema que encuentro es que al instalarlo en su ordenador que tiene Wind. XP da el error siguiente:
"No se encuentra el punto de entrada del procedimiento _ftol2 en la biblioteca de vinculos dinamicos msvcrt.dll
Esta compilado en W. Vista, y en el funciona bien, asi como en Linux . Que puede ser?. como puedo compilarlo para que vaya en XP?. Saludos : Gaby
Mailing lists / lazarus-es / 2011-02
compilado en Windows Vista, no va en XP
7 messages · 4 people · –
- GGabriel Martinez 2
- JJosé Manuel Jover 2
- JJosé Mejuto 2
- CClaudio Romero 1
Reply by email Subscribe to this list Your subscription
Read-only archive. Use j and k to move between messages.
Hello Gabriel,
Sunday, February 20, 2011, 9:27:22 PM, you wrote:
GM> He hecho un programita con Lazarus, con el control TOpenGlControl, GM> dibujando dos vias que se mueven en pantalla ciclicamente, y dos GM> cursores que manejo con dos potenciometros conectados a un Arduino, que GM> se comunica con el ordenador via USB con una entrada serie virtual. GM> El programa es una imitaci�n de los que utilizan en las empresas de GM> certificado medico en espa�a para dar el certificado para renovar el GM> carnet de conducir.
GM> Es pqrq mi hermano que esta mayor, jeje.
GM> El problema que encuentro es que al instalarlo en su ordenador que GM> tiene Wind. XP da el error siguiente:
GM> "No se encuentra el punto de entrada del procedimiento _ftol2 en la GM> biblioteca de vinculos dinamicos msvcrt.dll
GM> Esta compilado en W. Vista, y en el funciona bien, asi como en Linux . GM> Que puede ser?. como puedo compilarlo para que vaya en XP?. GM> Saludos : Gaby
Necesitas instalar los runtimes de Visual C 7 si no me equivoco o en otras palabras del VC 2003 o superior.
Creo que con esto ser�a suficiente:
http://www.microsoft.com/downloads/es-es/details.aspx?FamilyID=9B2DA534-3E03-4391-8A4D-074B9F2BC1BF
He instalado un ejecutable que se llama vcredist_x86.exe, que me instala el
Microsoft Visual C++2008 Redistributable. Pero me da el mismo mensaje de error, parece que no es correcto el msvcrt.dll
Me dice: "No se encuentra el punto de entrada del procedimiento _ftol2 en la biblioteca de vinculos dinamicos msvcrt.dll Un beso Victor J. Martinez
Buenas tardes:
Estoy intentando acceder a un puerto pero no consigo entrar, al utilizar las directivas asm me da un error de compilacion: Selected assembler reader not supported
el fuente es simple
asm
mov dx,puerto
mov al,num
out dx,al
end;
�Alguien me puede echar una mano?
Tambien lo esto intentando con -ioperm- pero no se como hacerlo
�Alguien me puede ayudar con esto?�Alguien sabe como escribir un integer en un puerto?.
Si me podeis pasar un pedazo de codigo os estaria muy agradecido.
Saludos
JoseCreo que te falt�
{$ASMMODE intel}No estoy seguro que Windows te deje escribir directamente al puerto. Hab�a componentes para
hacerlo, pero no recuerdo cuales, podr�as buscar algo en google.
Saludos
Buenos dias:
Perdona, pero puede ser que no indicara el SO,
Estoy utilizando Ubuntu(linux)
Y me gustaria escribir un car�cter en un puerto, utilizando ASM u otra cosa
Gracias.
Saludos
Jose
Earlier message 15 lines
Hello Jos�,
Friday, February 25, 2011, 8:08:04 AM, you wrote:
JMJ> Perdona, pero puede ser que no indicara el SO, JMJ> Estoy utilizando Ubuntu(linux)
JMJ> Y me gustaria escribir un car�cter en un puerto, utilizando ASM u otra cosa
Necesitas que tu Linux tenga un driver de modo kernel que te provea del acceso a los puertos ya que s�lo el kernel puede hacerlo.
La mayor�a de Linux vienen con este driver de serie, el ioperm. En fpc accedes a esa funci�n incluyendo en el uses la unit "libc".
Un poco m�s de informaci�n, es para "C" pero la idea es la misma.
-------------------------
Before you access any ports, you must give your program permission to do so. This is done by calling the ioperm() function (declared in unistd.h, and defined in the kernel) somewhere near the start of your program (before any I/O port accesses). The syntax is ioperm(from, num, turn_on), where from is the first port number to give access to, and num the number of consecutive ports to give access to. For example, ioperm(0x300, 5, 1) would give access to ports 0x300 through 0x304 (a total of 5 ports). The last argument is a Boolean value specifying whether to give access to the program to the ports (true (1)) or to remove access (false (0)). You can call ioperm() multiple times to enable multiple non-consecutive ports. See the ioperm(2) manual page for details on the syntax.
The ioperm() call requires your program to have root privileges; thus you need to either run it as the root user, or make it setuid root. You can drop the root privileges after you have called ioperm() to enable the ports you want to use. You are not required to explicitly drop your port access privileges with ioperm(..., 0) at the end of your program; this is done automatically as the process exits.
A setuid() to a non-root user does not disable the port access granted by ioperm(), but a fork() does (the child process does not get access, but the parent retains it).
ioperm() can only give access to ports 0x000 through 0x3ff; for higher ports, you need to use iopl() (which gives you access to all ports at once). Use the level argument 3 (i.e., iopl(3)) to give your program access to all I/O ports (so be careful --- accessing the wrong ports can do all sorts of nasty things to your computer). Again, you need root privileges to call iopl(). See the iopl(2) manual page for details.
-------------------------
http://www.faqs.org/docs/Linux-mini/IO-Port-Programming.html#s2
