# Native Code > برنامه نویسی در Delphi > کامپوننت های سایر شرکت ها، و توسعه کامپوننت >  همه چیز در مورد Kylix  سوالات و راهکارها

## mahdi.sagga

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

*سوال اول* در مورد محدودیت طول پیامک در این کامپوننت بود که طبق گفته دوست عزیز جناب Alaleh با تغییر مقدار 0 در پارامتر IsConcatenatedSMS  به مقدار 1 این مشکل حل میشه همینجا از ایشون تشکر میکنم. :تشویق: 


*سوال دوم* که هنوز براش جوابی پیدا نکردم در مورد شارژ سیم کارته بدین صورت که هر موقع اگه حین ارسال پیامک گروهی شارژ یا همون اعتبار سیم کارت به پایان رسید برنامه یه پیغام بده و ارسال رو متوقف کنه در این مورد آیا راهکاری وجود داره؟ :متفکر: 

*سوال سوم* من در مورد نحوه قطع اتصال هنگام ارسال پیامک گروهیه با چه کدی میشه کایلیکس رو به حالت استوپ فرستاد و با چه کدی دوباره میشه فعالش کرد. :متفکر: 

*سوال چهارم* در مورد شارژ اعتبار از طریق این کامپوننت هستش آیا میشه یه سیم کارتی رو با با وارد کردن کد شارژ از داخل خود  نرم افزار شارژ کرد؟ :متفکر: 

*سوال پنجم* در مورد نمایش خودکار پیام بدون تایید گیرنده هستش حتما توجه کردین که هنگامی که طول پیامکتون بیشتر از یک صفحه میشه و بعد از فعال کردن گزینه نمایش خودکار یا همون flash sms و زدن دکمه ارسال هنگام دریافت پیامک در گوشی فقط صفحه اول نمایش داده میشه و برای دیدن بقیه پیامک باید به صندوق دریافت گوشی رفت و پیامک رو دوباره باز کرد که یه نوع اضافه کاری میشه .حالا راهی هست که پیامک به صورت کامل دریافت بشه در حالات flash. :متفکر: 

از دوستان و همه بزرگان این انجمن تشکر و قدردانی ویژه میکنم و پیشاپیش سالی خوب و سرشار از موقیت رو برای همه آرزومندم. :لبخند:  :قلب:

----------


## Alaleh

جواب 2: اگه بخواین اینکارو انجام بدین باید بعد از هر پیامک باقیمونده شارژتون رو از اپراتور درخواست کنین. در غیر این صورت اگه ارسال موفق باشه عدد مثبت وگرنه منفی بر میگردونه پس امکان اینکه بدون استعلام شارژ بفهمین نیست.
جواب 3: فقط دستور ارسال ندین اینکار در زمان ارسال ممکن نیست باید بعد از هر ارسال چک کنید که اگه کاربر مثلا روی دکمه توقف که ساختین کلیک کرده بود دیگه ارسال نکنید.
جواب 4: این کد برای استعلام شارژه 
KylixSMS1.DialUSSD('*140*1#')
باید به جای کد استعلام کد شارژ رو بنویسید.
جواب 5: قبل از اینکه دستور ارسال رو بدین مقدار خصوصیت IsFlashSMS رو باید 1 بدین.

----------


## mahdi.sagga

ممنون و سپاس گذارم از پاسخ های خوبتون جناب alaleh
در مورد سوال دوم اگه بخام بعد از ارسال هر 20 پیامک از طریق کایلیکس مقدار شارژ رو استعلام کنم میتونم با یه حلقه و یه شمارنده این کار رو انجام بدم ولی مشکل اینجاست که جواب استعلامی که بالفرض از ایرانسل میاد به صورت پیامک نیست که بشه مقدا شارژ باقی مونده رو از توش استخراج کرد بلکه یه شکل دیگه ای از پیغامه که اسمشم نمیدونم چیه. سوالم اینه که آیا با کایلیکس امکان دریافت و ذخیره این نوع پیام  بخصوص وجود داره؟

----------


## Alaleh

دستور 
KylixSMS1.DialUSSD
برای ارسال فرمان و رویداد
OnNewUSSD
برای دریافت جواب هستش.

----------


## Mahdi_S_T

در ضمن دریافت گزارش شارژ فقط بر روی ایرانسل جواب میده و برای همراه اول جواب نمیده !

----------


## mahdi.sagga

*سلام خدمت همه دوستان سال نو همه تون مبارک باشه یه اشکال کوچولو باز با این kylix دارم طبق گفته پست بالا با دستور  KylixSMS1.DialUSSD('*140*1#')  درخواست استعلام شارژ رو میدم حالا اگه بخام نتیجه این درخواست در یک memo یا  message bux نمایش داده بشه باید از چه کدی برای این کار  استفاده کنم؟ 
ممنون از همه شما
*

----------


## Mahdi_S_T

شما باید روی کامپوننت KylixSMS کلیک کنید و رویداد OnNewUSSD را انتخاب کنید و در داخل این رویداد پارامتر Text حاوی مقدار برگشتی کد ارسال شده است (فرضا مقدار شارژ)

در ضمن به تازه گی مشکل ارسال کد در همراه اول حل شده و با KylixSMS جواب میده  :لبخند گشاده!:

----------


## mahdi.sagga

ممون از پاسختون ولی کامل متوجه نشدم 
الان این دستور رو تو یدونه button نوشتم ولی موقع اجرا خطا میده
(Kylix.DialUSSD(Edit1.Text
memo1.Text:=Kylix.OnNewUSSD
میخام یه طوری باشه که بعد از کلیک روی دکمه کد رو از edit 1 بگیره بفرسته kylix و نتیجه رو تو memo1 نشون بده.

----------


## Mahdi_S_T

نه اینطوری درست نیست.ببین هر موقع که جواب کد ارسال شده برگرده ، رویداد OnNewUSSD اجرا میشه و متن کد برگشتی در پارامتر Text قرار میگیره و شما میتونی از آن استفاده کنی.
بعنوان مثال روی رویداد OnNewUSSD   دوبار کلیک کن و سپس کد زیر را بنویس و روی فرم خود هم یک Memo  قرار بده :
Form1.Memo1.text:=Text;

----------


## mahdi.sagga

از پاسخي که دادين ممنونم طبق مراحل بالا کارو انجام دادم ولي بعد از ارسال کد  هيچ چيزي در برگشت در memo نمايش داده نميشه.همه چیزم درسته نمیدونم دیگه چی کار کنم :ناراحت:

----------


## mahdi.sagga

دوستان یه مساله جالب دیگه بعد از نصب kilix به همراهش مثالها شم که شامل کد هاشم هست به زبان های مختلف نصب میشه .تو خود نرم افزار دمو شم کد های این قسمت OnNewUSSD  موجود هست ولی من روی اونم امتحان کردم و متاسفانه هیچ پاسخی رو در برگشت نمایش نداد .

----------


## ostovarit

در مورد این کامپوننت و موارد مشابه در این تاپیک مفصل بحث شده ... یک بررسی کنید شاید به دردتون خورد:
https://barnamenevis.org/showthread.p...%AA&highlight=

----------


## jsezar

سلام
دوستان کسی تونسته با بلوتوث به موبایل وصل بشه از طریق کایلیکس؟اگه کسی هست می تونه یه راهنمایی بکنه؟

----------


## Mahdi_S_T

مودم gsm داری یا از موبایل استفاده می کنی ؟ این کامپوننت با یکسری خاص از موبایل ها درست جواب میده !؟

----------


## Bashiri.NET

با این کامپوننت میشه وقتی کسی به شما زنگ زد متوجه شد. اگه ارتباط برقرار بشه و در حین مکالمه، طرف دکمه ای رو فشار داد، چطوری میشه فهمید چه دکمه ای زده شده؟
(مثال: برنامه تلفن گویا)

----------


## Mahdi_S_T

تا جایی که من می دونم kylix چنین امکانی نداره !

----------


## jigily

من وقتي خود نمونه برنامه kylix  را اجرا ميكنم خيلي كند كار ميكنه.
حالا ازش توي برنامه خودمم استفاده كردم ديگه افتضاح شده ،هنگ ميكنه ..ولي بالاخره پيام ميفرسته..
كسي ميدونه دليلش چيه؟

----------


## Mahdi_S_T

> من وقتي خود نمونه برنامه kylix  را اجرا ميكنم خيلي كند كار ميكنه.
> حالا ازش توي برنامه خودمم استفاده كردم ديگه افتضاح شده ،هنگ ميكنه ..ولي بالاخره پيام ميفرسته..
> كسي ميدونه دليلش چيه؟


در ابتدای اتصال به مودم یک مقدار برنامه حالت هنگ پیدا میکنه چون در این بین میره تا پیامک های جدید را از سیم کارت بخوانه و بعد درست میشه که با thread مشکل حل میشه . در هنگام ارسال هم باز چون برای ارسال پیامک یکسری عملیات انجام میشه باز هم چند ثانیه در هنگام ارسال برنامه هنگ میکنه که با همان thread مشکل قابل حل است.البته به خود فایل کایلیکس هم ربط داره که نسخه ک.ر.ک شده مشکل داره و باید از نسخه لایسنس دار استفاده کنید.

----------


## jigily

براي كار با thread بايد چكار كنم؟ يك متد تعريف كردم بعدش كدهاي مربوط به چك كردن كانكت شدن را توش گذاشتم و وقتي دكمه كانكت زده ميشه اونرو با يك ترد فراخواني ميكنم اما موقعي كه دكمه كانكت ميزنم eror ميده و به thread ايراد ميگيره..
مشكل از نوشتنthread هستش؟
چجوري بايد بنويسم.
ممنون ميشم كمك كنيد..

----------


## jigily

يكي نيست جواب بده :افسرده:  :گریه:

----------


## jigily

يك كلاس تعريف كردم حالا براي اينكه متد كانكت توش بنويسم اومدم دو تا ريفرنس هارو به بالاي برنامه اضافه كردم..
اما بازم كدم كار نميكنه..

----------


## Mahdi_S_T

دوست من اگه هدف خاصی نداری، تعریف کلاس لازم نیست و مشکل شما با Thread قابل حل است.چندین آمورش خوب در سایت است جستجو کن و با تامل و کمی دقت میتونی thread مناسب را بسازی اگه نشد اینجا بذار تا نگاهش کنم

----------


## jigily

يك مشكل با كايليكس دارم اونم اينه كه ميخوام فقط اسمس هايي كه درون inbox هست بخونم نه اسمس هاي ديگه رو بايد چه تغييري در كدم بدم؟

----------


## Mahdi_S_T

> يك مشكل با كايليكس دارم اونم اينه كه ميخوام فقط اسمس هايي كه درون inbox هست بخونم نه اسمس هاي ديگه رو بايد چه تغييري در كدم بدم؟


میشه منظورتان را واضح تر بیان کنید ؟

----------


## jigily

> میشه منظورتان را واضح تر بیان کنید ؟


وقتي اسمس هارو ميخواد بخونه همه اسمس ها inbox , outbox و ...ميخونه اما من فقط inbox ميخوام

----------


## Mahdi_S_T

فکر کنم تابع زیر بتونه کمکت کنه :

GetSMSFolderInfo(inbox)

----------


## jigily

> فکر کنم تابع زیر بتونه کمکت کنه :
> 
> GetSMSFolderInfo(inbox)


ميدونم اما نميدونم چجوري توي read sms بايد ازش استفاده كنم.

----------


## Mahdi_S_T

شما باید در رویداد OnNewSmsRecived توسط این تابع چک کنید که اگه پیامک رسیده مربوط به پوشه inbox است پیامک را بخوانه :

IF GetSMSSFolderInfo(Folder) = inbox Then
.....

----------


## jigily

> شما باید در رویداد OnNewSmsRecived توسط این تابع چک کنید که اگه پیامک رسیده مربوط به پوشه inbox است پیامک را بخوانه :
> 
> IF GetSMSSFolderInfo(Folder) = inbox Then
> .....


من اين كد گذاشتم اما نميدونم چرا توي if اجرا نميشه
 
int lResult, lFolder;
string strStatus;
lvSMSList.Items.Clear();
for (int i = 0; i < 50; )
{
if (i == 0)

lResult = axKylixSMS.ReadAllSMS(1);
//declaration: int ReadAllSMS(int IsFirst)

else


lResult = axKylixSMS.ReadAllSMS(0);

if (ERR_SUCCESS != lResult)

break;


lFolder = axKylixSMS.LastReadSMSFolder;
if (axKylixSMS.GetSMSFolderInfo(lFolder).ToString() == "ME Inbox")
{

lvSMSList.Items.Add((i + 1).ToString(), 0);
lvSMSList.Items[i].SubItems.Add(axKylixSMS.LastReadSMSLocation.ToStr  ing());
lvSMSList.Items[i].SubItems.Add(axKylixSMS.LastReadSMSTime);
lvSMSList.Items[i].SubItems.Add(axKylixSMS.LastReadSMSNumber);
lvSMSList.Items[i].SubItems.Add(axKylixSMS.LastReadSMSText);
i++;
}
else

{
i++;
}

}

----------


## jigily

تو را خدا يكي جواب بده كارم گير كرده..

----------


## Mahdi_S_T

دوست عزیز همانطور که گفتم باید در Event دریافت پیامک جدید کد را بنویسید و مشکلی نداره :

procedure TFormMain.KylixSMSNewSMSReceived(ASender: TObject; Folder,
  Location: Integer; const Number, Text, Time,
  ConcatenatedInfo: WideString; Coding, Status: Integer);
var strMsg : String;
begin
  IF Kylixsms.GetSMSFolderinfo(folder) = 'inbox' Then begin
    ........
    ........
  end;
end;


اما کدی که شما نوشتید ظاهرا سی شارپ است من با سی شارپ زیاد کار نکردم ولی یک چیزی مثل این میتونه احتیاج شما را برطرف کنه :

   private void axKylixSMS_NewSMSReceived(object sender, AxKYLIXSMSLib._DKylixSMSEvents_NewSMSReceivedEvent e)
        {
           if axKylixSMS.GetSMSFolderInfo(e.folder)=="inbox"
              {

                .................
                .................

              }
 
        }

----------


## homayoun_sa

سلام من مشگلم با Kylix اینه که وقتی طولش زیاد میشه تبدیل به چند تا sms میشه , دیدم که با kylix این کار رو کردن و این مشکل را نداشتند
ممنون

----------


## Mahdi_S_T

بله درسته ، KylixSMS هم در ارسال و هم در دریافت پیامک ها ار تکه تکه میکنه.
اما برای ارسال به راحتی قابل حله ولی برای دریافت باید برنامه بنویسی بر اساس کد دریافتی هر پیامک .

----------


## pooyamirzapour

*می خواستم بدونم کامپوننت kylix  امکاناتی برای Caller ID  هم داره؟
مثلا بتونم با استفاده از امکانات این کامپوننت و مودم شماره گیرنده رو تو نرم افزارم ببینم؟*

----------


## Mahdi_S_T

> *می خواستم بدونم کامپوننت kylix  امکاناتی برای Caller ID  هم داره؟
> مثلا بتونم با استفاده از امکانات این کامپوننت و مودم شماره گیرنده رو تو نرم افزارم ببینم؟*


بله این قابلیت وجود داره

----------


## pooyamirzapour

اگه امکان داره توضیحات بیشتری بدین و اگه نمونه کدی هم دارین لطف کنین بذارین

----------


## Mahdi_S_T

شما در رویداد OnNewCall مربوط به Kylix میتوانید شماره تماس گیرنده را در متغیر Number داشته باشید و استفاده کنید

----------


## akar_program

سلام    دوستان من دوتا مودیم  خرید  باز هم نتونستم  شارژ موبایلم بادست بیام  
 لطفا كمك كنن  هر كاری میكنم نمیشه‌    كه‌سی میتواند دقیق تشخیس كند مشكیل چی هست  سیم كات ایران سل هم تیست كردم

----------


## Mahdi_S_T

دوست عزیز ، برنامه را برام بفرست تا من با مودم های خودم تست کنم

----------


## akar_program

نمونه‌ چی  هه‌مون نمونه‌ ی كه‌ خودت هم ابلود كردید من تیست كردم كار نكر 
 لطفا یك نمونه‌ ی كامل بنویسید  تا من ببینم كار میده‌ یا خیر   ایستفاده‌ از این قابلیت  بسار هم سادست  ولی  نمیدونم چرا جواب نمیده‌

----------


## hamed_hossani

http://www.regnow.com/softsell/visit...tiveXSetup.exe
دانلود

----------


## Delphi 2010

یه مشکل بزرگ
توی Kylix گزارش تحویل پیامک رو میده فقط مشکل اینه که گزارش تحویل به مخابرات رو میده و گزارش تحویل به گوشی دریافت کننده رو نمیده
این مشکل رو چطوری حل کنم

----------


## amish22

سلام 
من kylix را با نرم افزار ActiveXManager وEMS رجیستر کردم، و در WPF می خوام ازش استفاده کنم ولی روی خط  registername و registercode خطای زیر را می دهد . اشکال از کجاست و این دو پارامتر را باید از کجا گیر بیاورم در ضمن برنامه ی اول یک کد و نام داد مقداردهی کردم جواب نداد.
ممنون می شوم کمک کنید

----------


## Delphi 2010

دوستان جواب سوال بنده رو یادتون رفت بدید فکرکنم

----------


## aliramazani

> دستور 
> KylixSMS1.DialUSSD
> برای ارسال فرمان و رویداد
> OnNewUSSD
> برای دریافت جواب هستش.


اگه یک تکس باکس داشته باشیم که کاربر کد شارژ را داخلش وارد کنه چه دستوری باید بنویسیم؟

و اگه یک دکمه داشته باشیم که کاربر با کلیک بر روی اون توی یک تک باکس مقدار شارژ موجود را نشون بده چه کدی؟

----------


## firststep

> اگه یک تکس باکس داشته باشیم که کاربر کد شارژ را داخلش وارد کنه چه دستوری باید بنویسیم؟
> 
> و اگه یک دکمه داشته باشیم که کاربر با کلیک بر روی اون توی یک تک باکس مقدار شارژ موجود را نشون بده چه کدی؟


در این باره یک بار بحث شده.......جستجو کنید

----------


## aliramazani

> بعنوان مثال روی رویداد OnNewUSSD   دوبار کلیک کن و سپس کد زیر را بنویس و روی فرم خود هم یک Memo  قرار بده :
> Form1.Memo1.text:=Text;


این OnNewUSSD چیه و کجاست و کجا باید روش دوبار کلیک کرد؟

----------


## gbg

OnNewUSSD فقط یه رویداد هستش

----------


## aliramazani

روی یک رویداد چطور دوبار کلیک کنم؟؟

----------


## gbg

ببین رویداد رو نمیشه کلیک کرد
خودش اتفاق میوفته مثل رویداد Onclick که در جواب کلیک کردن شما اتفاق میوفته
و شما کدی برای این رویداد می نویسی تا عملیات دلخواه خودت رو انجام بدی
رویداد OnNewUSSD وقتی اتفاق میوفته که کامپوننت یه  USSD جدید دریافت کنه

----------


## sg.programmer

> یه مشکل بزرگ
> ..............   گزارش تحویل به گوشی دریافت کننده رو نمیده
> این مشکل رو چطوری حل کنم


 کامپوننت در کرک شده نیست

----------


## Delphi 2010

ربطی به کرک کامپوننت نداره
منم همین مشکل رو دارم

----------


## kahrizak

سلام بچه ها من دنبال کایلیکس برای ارسال پیامک هستم
kylix یا lcgsmsms کرک شده باشه یا نسخه اصلیش ممنون :متفکر: 

4 . 5 روز دنبالشم گیرم نیومد  :گریه:

----------


## araz_pashazadeh

اینا همش درست ولی مشکل اینجاست که من اصلا نمی تونم Kylix استفاده کنم در واقع 
رجیستر نمی شه نمونه کد خودش درست کار میکنه وقتی می خوام  در #C استفاده کنم
با مشکل مواجه میشم واسه رجیستر کردن نمی دونم چیکار کنم؟

----------


## hamiddowlat

سلام دوستان امیدوارم حالتون خوب باشه با قبولی طاعات و عبادات 
  ببخشید یه سوال داشتم میخواستم بپرسم برای استعلام شارژ چه کدی بنویسم که جواب بگیرم
  من یه برنامه ارسال ودریافت پیامک با مودم جی اس پیامک نوشتم و از کامپوننت Kylix  استفاده میکنم تو  ارسال مشکلی ندارم دریافت هم نداشتم ک بخوام تست کنم برای استعلام شارژ نمیدونم چیکار کنم از راه کار های قبلی که دوستان در این تایپک گذاشتن جواب نگرفتم( فرم memo نمیدونم چیه که بذارم رو فرمم)   ممنون میشم کسی اگه میدونه کمکم کنه

----------


## Mahdi_S_T

دوست عزیز ، اگه پاسخهای قبلی را در همین موضوع خونده باشی به راحتی قابل انجام است. هرچند که در مثالهای خود کامپیوننت Kylix هم وجود داره.
منظور از Memo هم یک کنترل است مثل textbox  و Lable و ....

----------


## hamiddowlat

بسیار ممنون دوست عزیز به خاطر پاسخ گویی 
گفتم که روش های زیادی که اینجا بود رو تست کردم نشد بینید این عکس کد منه الان من باید رویروی لیبل خودم چی بنویسم که اعتبار رو نشون بده 
http://uupload.ir/files/wrbr_000000000(36).png

----------


## hamiddowlat

دوستان عزیزم من مشکلم حل شد خواستم اینجا هم بذارم شاید بتونم به کسی کمکی کرده باشم ، من واسه استعلام شارژ خیلی مشکل داشتم همه ی راه کار هارو هم امتحان کردم اما در رویداد کلیک خودم ک میخواستم استعلام بگیرم با نوشتن serialport1.open()
 و بعد بقیه کدها مشکلم حل شد       private void button1_Click_3(object sender, EventArgs e)
        {
            serialPort1.Open();
            serialPort1.WriteLine("AT+CSCS=\"GSM\"\r");
            serialPort1.WriteLine("AT+CUSD=1," + textBox2.Text + ",15\r");
            axKylixSMS1.DialUSSD("*141*1#");
               }


و برای نمایش جواب 


     private void axKylixSMS1_NewUSSD(object sender, AxKYLIXSMSLib._DKylixSMSEvents_NewUSSDEvent e)
        {
            lbl_request.Text = e.text; 
        }

شاید منطق برنامه درست نباشه ک همزمان از AT  و کامپوننت استفاده کردم اما در کل من فقط با این کد تونستم جواب بگیرم و اگر هر جاشو کمو زیاد کنم ج نمیده 
واسه دوستان گذاشتم که اگه کسی اصلا نتیجه نگرفته این کد های منو هم امتحان بکنه انشاا... حل میشه :قلب:

----------

