خواندن فایل درc

narges66

عضو جدید
سلام دوستان
لطفاکمکم کنیدمیخوام یه فایل که محتویاتش درزیراومده رو بخونم اگر محتویاتش onیاoffبود یه بیت به پورت موازی بفرسته منتهااین فایل شماره تلفن و...رونمی خوام فقط خط سومش برام مهمه چی طوری شرط براش بذارم
خواهش می کنم هرکه می تونه سریع جواب بده خیلی وقت ندارم بایدتحویلش بدم:gol:
 

sayyad84

متخصص زبان Assembly
کاربر ممتاز
سلام دوستان
لطفاکمکم کنیدمیخوام یه فایل که محتویاتش درزیراومده رو بخونم اگر محتویاتش onیاoffبود یه بیت به پورت موازی بفرسته منتهااین فایل شماره تلفن و...رونمی خوام فقط خط سومش برام مهمه چی طوری شرط براش بذارم
خواهش می کنم هرکه می تونه سریع جواب بده خیلی وقت ندارم بایدتحویلش بدم:gol:

عذر می خوام کدوم محتویات؟؟
 

narges66

عضو جدید
ببخشیدفراموش کردم محتویاتو بذارم
اینه:
+98916669658560
+989169579744536
On
10/11/2010 5:47:08 AM
10/19/2009 10:48:53 PM
من فقط این onبرام مهمه
 

sayyad84

متخصص زبان Assembly
کاربر ممتاز
با سلام،
در ساده ترین حالت می تونید فایل رو کاراکتر به کاراکتر با دستور getc بگردید. اگر کاراکتر با O برابر بود کاراکتر بعدی رو چک می کنید که n یا f باشه!
البته راه های دیگه ای هم هست.
برای ارسال به پورت هم باید dos.h رو اضافه کنید و از دستور outportb(PORT NO , BYTE DATA استفاده کنید. برای پیداکردن شماره ی پورت به Device manager برید و از لیست پورت ها LPT و سپس Resources رو انتخاب کنید.
 
  • Like
واکنش ها: Sarp

narges66

عضو جدید
ببخشید برنامه رواین جوری نوشتم:


#include <string.h>
#include <stdio.h>
#include<conio.h>
#include<dos.h>
#include<stdlib.h>
void senddata(int portid,unsigned char data)
{
outport(portid,data);
}
int main(void)
{
FILE *stream;
char string[50];
char msg[50];
char *p;
char str1[]="on";
char str2[]="off";
clrscr();
/* open a file for read */
stream = fopen("c:/smstemp/smsin/t1.smsfile","rt") ;
if(!stream)
{ printf("can not file");
return 1;
}
else {
fseek(stream, 30L, SEEK_SET);
// {
/* read a string from the file */
fgets(msg, strlen(string)+1, stream);
printf("%s", msg);
// }
if(strcmp(msg,str1)==0)
{
senddata(0x378,1);
delay(1000);
printf("\n msg contain on");
}
else
{
if(strcmp(msg,str2)==0)
{
senddata(0x378,0);
delay(1000);
printf("\n msg contain off");
}
else
return 1;
}
}
fclose(stream);
getch();
return 0;
}

ولی همه اش قسمت else آخری روبرمی گردونه چون محتویاتش فقط onیاoffنیست اون شماره تلفن هاوتاریخ هم جزءمحتویاتشه منتهانمی دونم چی براش تعریف کنم که فقط خط سوم بررسی کنه بقیه اش مهم نباشه که چی درضمن این تاریخ ثابت نیست که براش شرط بذاریم :gol:
خیلی ممنونم
 

sayyad84

متخصص زبان Assembly
کاربر ممتاز
با سلام،
برنامه ی شما رشته های 50 کاراکتری رو برمی داره که شامل space هم می شه و ممکنه حرف O در بار اول برداشته بشه و حرف بعدی در بار بعدی در دستور gets! حتی اگر رشته رو 2 یا 3 کاراکتری انتخاب کنید هم همین مشکل می تونه به وجود بیاد پس بهترین کار خوندن کاراکتر به کاراکتره!
به جای قسمت خواندن رشته می تونید این رو بزارید(البته می گم در ساده ترین حالت!):

(یادم رفت بگم با فرض این که بعد از On یا Off فاصله باشم نوشتم و الا قسمت مقایسه با Space باید حذف بشه!)
اگر مشکلی بود و یا اصرار داشتید با رشته بنویسید بگید تا مجدد روش فکر کنیم.
امیدوارم کارتون رو را بندازه!
 

پیوست ها

  • Info.txt
    577 بایت · بازدیدها: 0

narges66

عضو جدید
سلام
ببخشیدبازهم مزاحم شدم
برنامه رو اون جوری که فرمودیدنوشتم منتها بااینکه محتویات فایل onولی هیچی نشون نمیده فقط صفحه مشکی میاد لطفابرنامه رونگاه کنید مشکل کجاست.
خیلی ممنونم:gol:

#include <string.h>
#include <stdio.h>
#include<conio.h>
#include<dos.h>
#include<stdlib.h>
void senddata(int portid,unsigned char data)
{
outport(portid,data);
}
int main(void)
{
FILE *stream;

char temp;

clrscr();
/* open a file for read */
stream = fopen("c:/smstemp/smsin/t1.smsfile","rt") ;
if(!stream)
{
printf("can not file");
return 1;
}

else
{

fseek(stream, 30L, SEEK_SET);
while(!feof(stream))
{
temp=fgetc(stream);

if((temp=='o')|| (temp=='O'))
{
temp=fgetc(stream);

if((temp=='n') ||(temp=='N'))
if(fgetc(stream)==' ')
{
printf("\n msg contain on");

senddata(0x378,1);
delay(1000);
}
else

if((temp=='f')||(temp=='F'))
{
temp=fgetc(stream);

if((temp=='f')||(temp=='F'))
if(fgetc(stream)==' ')
{

senddata(0x378,0);
delay(1000);
printf("\n msg contain off");

}
}
}
}
}
fclose(stream);
getch();
return 0;
}

 
آخرین ویرایش:

sayyad84

متخصص زبان Assembly
کاربر ممتاز
کمی تغییرات توش دادم امیدوارم درست شده باشه!
با آرزوی موفقیت!
 

پیوست ها

  • Port.rar
    548 بایت · بازدیدها: 0

narges66

عضو جدید
سلام
شرمنده ،ببخشید بازهم مزاحم شدم
برنامه روکه این جوری تغیییردادم پیغام هرشرط که برقرارباشه نمایش میده منتها ledکه به پورت وصل کردم همش روشنه ،سرمثبت ledروبه پورت وسرمنفی روبه بدنه وصل کردم ،به نظرتون ایراد برنامه کجاست ؟
خیلی ممنونم :gol:
 

پیوست ها

  • PORT2.txt
    1.1 کیلوبایت · بازدیدها: 0

sayyad84

متخصص زبان Assembly
کاربر ممتاز
با سلام،
راستش من تا حالا با پورت ها کار نکردم بنابراین نمی تونم جواب کاملی بهتون بدم.
اول این که من که گفتم اگه بعد از On و یا Off فاصله ندارید تو فایل، باید قسمت مقایسه با فاصله رو حذف کنید.
دوم این که استفاده از Return 1 برنامه رو به پایان نمی رسونه پس وقتی فایل باز نمی شه باید از exit 0 استفاده کنید تا برنامه رو ببنده.
سوم این که پورت مورد استفاده، خودش Ground داره که تو این PDF می تونید اطلاعات نسبتاً خوبی راجع بهش پیدا کنید.
و چهارم می تونید از دستور outportb هم استفاده کنید و تست کنید البته با Delay مثلاً 100.
PDF رو با دقت بخونید حتماً کمکتون می کنه. ضمناً اتصال مستقیم به پورت می تونه بهش آسیب برسونه پس از یه مقاومت استفاده کنید.
با آرزوی موفقیت!
 

پیوست ها

  • aa.pdf
    200.4 کیلوبایت · بازدیدها: 0

narges66

عضو جدید
سلام
خیلی خیلی ازتون ممنونم ان شاءالله موفق مؤید باشید
 

sayyad84

متخصص زبان Assembly
کاربر ممتاز
با سلام،
امیدوارم مشکلتون حل بشه!
 

پیوست ها

  • Port.rar
    725 بایت · بازدیدها: 0

sayyad84

متخصص زبان Assembly
کاربر ممتاز
با سلام،
و آرزوی توفیق!
 

پیوست ها

  • Port2.rar
    594 بایت · بازدیدها: 0

sayyad84

متخصص زبان Assembly
کاربر ممتاز
استفاده از userport

استفاده از userport

با سلام،
از این نرم افزار می تونید برای کار با پورت LPT در ویندوز استفاده کنید. برای شروع فایل UserPort.sys رو در مسیر زیر کپی کنید:
C:\windows\system32\drivers
حالا برنامه ی Userport رو باز کنید و آدرس پورت هایی که به طور پیش فرض داره انتخاب و با زدن Remove حذف کنید تا لیست خالی بشه!
حالا در کادر بازه ی پورت های سیستم خودتون رو وارد کنید، مثلاً: 0x378-0x37f
با همین فرمت! و دکمه ی Start رو بزنید. برنامه رو نبندید.
برنامه ی مورد نظرتون رو اجرا کنید. حتماً کار می کنه!
با آرزوی موفقیت!
 

پیوست ها

  • UserPort.zip
    65 کیلوبایت · بازدیدها: 0

sayyad84

متخصص زبان Assembly
کاربر ممتاز
با سلام،
و آرزوی موفقیت!
 

پیوست ها

  • Port3.rar
    16.8 کیلوبایت · بازدیدها: 0

Similar threads

بالا