PDA

View Full Version : درخواست تبدیل سورس C به DLL یا FLL



rezamim
چهارشنبه 11 مرداد 1385, 22:53 عصر
سلام به همه دوستان
من یک سورس با زبان C دارم که میخواستم به FLL یا DLL تبدیلش کنم.
آیا کسی میتونه اینکار رو برای من انجام بده ؟
مشکل اینه که من از C سر در نمیارم !
اینم سورس


#define PP 0x320
#define NO1 14
#define NO2 350

#include <stdio.h>
#include <conio.h>
#include <dos.h>
#include <io.h>
#include <stdlib.h>
#include <bios.h>

void main()
{
FILE *fop;
int t;
int i,j,k,l,i1,j1,l1,k1,zero,j2,l2,k2,last;
unsigned char ch ,comno,scale_type,baud;

comno= '\x0';
scale_type= '\x1';
baud= '\x1';
while ( ( bioscom(2,0,comno) & 0xff ) !=0xbb ) ;
if(!kbhit())
{
ch = bioscom(2,0,comno) & 0xff ;
if (ch==0xe0 || ch==0xf0 )
ch = bioscom(2,0,comno) & 0xff ;
if(ch) printf("%x",ch);
else printf("");
ch = bioscom(2,0,comno) & 0xff ;
printf("%x",ch>>4);
printf(".");
printf("%x",ch%16);
ch = bioscom(2,0,comno) & 0xff ;
// ch=ch>>4;
printf("%02x ",ch );
}
}


ممنون

rezaTavak
پنج شنبه 12 مرداد 1385, 10:00 صبح
من می تونیم اینکار را برای شما انجام بدهم اما:
در برنامه شما از یکسری توابع استفاده شده که در ویندوز جواب نمیده.

rezamim
جمعه 13 مرداد 1385, 19:51 عصر
ایا میتونید راهنمائی کنید که چکار کنم؟
فعلا فقط یک فایل exe تحت داس از اون درست کردم و اجبارا از اون دارم استفاده میکنم.
فکر کنم منظورتون تابع BiosCom هست. درسته ؟ چون تابع دیگه ای نمیبینم. این تابع هم که همه کارا رو میکنه.
میتونید بگید که این برنامه چه کار میکنه؟
البته این یه برنامه هست که برای خوندن وزن از باسکولهای شرکت پند هست. من با باسکولهای دیگه هم کار کرده ام ولی به نظرم این برنامه رشته Hex رو میخونه. باسکولهای دیگه رشته ارسالیشون دقیقا عدد وزن هست با یکی دو کاراکتر دیگه . ولی این یکی بنظر اینطور نیست

rezaTavak
شنبه 14 مرداد 1385, 13:23 عصر
bioscom

Syntax

#include <bios.h>

int bioscom(int cmd, char data, int port);


Description

This function accesses the BIOS interrupt 0x14 function, serial communication services. port should be the COM port (0=COM1, 1=COM2, etc).
The valid values of cmd are:

0 - initialize com port (data is the settings)
1 - write byte to port
2 - read byte from port (data is ignored)
3 - get port status


For initialization, the byte is made up of the following bits:
0000 0000
7654 3210 Meaning

---- --10 7 bits/character
---- --11 8 bits/character
---- -0-- 1 stop bit
---- -1-- 2 stop bits
---X 0--- no parity
---0 1--- odd parity
---1 1--- even parity
000- ---- 110 baud
001- ---- 150 baud
010- ---- 300 baud
011- ---- 600 baud
100- ---- 1200 baud
101- ---- 2400 baud
110- ---- 4800 baud
111- ---- 9600 baud

For writing a character out to the port, the return value's lower 8 bits contain the same byte as passed as the data argument.
For reading a character from the port, the value of data is ignored, and the lower 8 bits of the return value contain the byte read. Also, the "timeout" bit in the upper 8 bits is used as an error indicator in this case (0=success, 1=error). If it indicates an error, you should call the "get port status" variant to get the detailed error bits.

Return Value

The return value is a sequence of bits that indicate the port status and, for cmd=0 and 3, the modem status. For read/write operations, the lower eight bits are the character read.
1111 1100 0000 0000
5432 1098 7654 3210 Meaning

---- ---- ---- ---1 CTS change
---- ---- ---- --1- DSR change
---- ---- ---- -1-- ring change
---- ---- ---- 1--- carrier detect change
---- ---- ---1 ---- CTS present
---- ---- --1- ---- DSR present
---- ---- -1-- ---- ring present
---- ---- 1--- ---- carrier detect
---- ---1 ---- ---- data ready
---- --1- ---- ---- overrun error
---- -1-- ---- ---- parity error
---- 1--- ---- ---- framing error
---1 ---- ---- ---- break detected
--1- ---- ---- ---- transmit holding register empty
-1-- ---- ---- ---- transmit shift register empty
1--- ---- ---- ---- time out (=1 if error present for cmd=1,2)


Portability

ANSI/ISO C No POSIX No

Example

bioscom(0, 0xe3, 0); /* 9600 baud, no parity, one stop, 8 bits */
for (i=0; buf[i]; i++)
bioscom(1, buf[i], 0);


برنامه شما در واقع از پورت شماره یک اطلاعات می خواند.

rezamim
دوشنبه 24 تیر 1387, 08:30 صبح
جناب توكل
در راهنماي فوق و در قسمت مثال پاياني خط زير وجود دارد


bioscom(0, 0xe3, 0); /* 9600 baud, no parity, one stop, 8 bits */

كه قاعدتا مقدار 0xe3 نمايانگر 11و 0 و x0 و 111 ميباشد.
چطور اين مقادير به يكديگر تبديل شده اند؟
من در اين قسمتها بسيار ضعيف هستم. ممنون از راهنماييتان