الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

موقع www.freeblood.com يستعين بالله ثم يكم

مغلق
بدأه أبو محمد اللحياني في 19 نوفمبر 2006 · 11 رد · 3,494 مشاهدة · في JavaME
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

بسم الله الرحمن الرحيم

الحمد لله والصلاة والسلام على رسول الله وبعد ،

فكرة الموقع تقديم المساعدة لِمَن يحتاجُ من يتبرع له بالدم أو لذويه - في أي بلدٍ كان - بتزويده أرقام هواتف أو جوالات بالراغبين بالتبرع بالدم القريبين منه أو القاطنين في نفس مدينته أو منطقته

ولأن هذا الموقع وقف لله ، فلا يريد استغلال المحتاجين من الناحية المادية، فهذه المساعدة مجانية 100% وفريق الموقع وأعضاءه لا يريدون من المحتاج للتبرع له بالدم إلا الدعاء لهم بظهر الغيب

وسيكون - بإذن الله - هناك تطورات في الموقع من حيث الخدمات والمضمون والمظهر في القريب العاجل.

وتتجه سياسة الموقع إلى تسهيل وتيسير الخدمة لكل طالب التبرع له بالدم ومن ذلك (( استخدام رسائل الجوال القصيرة )) ..

ومن المعروف أن الكثير من مستخدمي الجوال لا يتصلون بالإنترنت من جوالاتهم ونسبة من يتعامل بالإنترنت منهم قد تصل واحد بالمئة كأكثر تقدير ولذا لزم تيسير وصول الخدمة لمن لا يتصل بالإنترنت بتوفير جوال وسيط يتولى الإتصال الإنترنت وإرسال الطلب إلى الموقع .

وتصوير الخدمة كالتالي :

1- يكتب محتاج التبرع له بالدم رسالة في جواله رقم الجوال واسم المدينة وفصيلة الدم كلٌ في سطر.

2- يرسل الرسالة لجوال يُعلَن رقمه في الموقع وهو يتولى الوساطة بين محتاجي الدم والموقع .

3- يستلم الجوال الوسيط الرسالة ويصيغها على شكل برامترات ترسل إلى الصفحة bloodsms.php مثلاً .

4-تفحص الصفحة bloodsms.php هذه المتغيرات وتبحث عن المتبرعين بالدم في تلك المدينة أو من المنطقة المحيطة بها ممن يحملون تلك الفصيلة من الدم وتأخذ أرقام الهواتف أو الجوالات حسب الموجود ثم ترسل له عشرة أرقام لمن لم يسبق لم التبرع بالدم أو مضى على تبرعهم قرابة 3 أشهر.

ما هو المطلوب من المبرمج المتبرع

ما نريده منكم يا مبرمجي الجوالات (بأي لغة كانت) ؟؟ هو عمل برنامج يكون وسيط بين طالب التبرع له بالدم والموقع على نحو الصورة الموجودة في المرفقات

ما هو عمل البرنامج بالتحديد ؟

1 - يكون شغال دائماً في الجوال ونشط بحيث يستقبل كل رسالة

2 - إن كان الرسالة مصاغة بصورة جيدة فنعم وإلا فلا ( نعم يعني يكمل العملية )

3 - يقطع الرسالة إلى متغيرات كل سطر متغير ( يعني مصفوفة )

4 - يفحص متغيرات المصفوفة ويحدد ما هو رقم الجوال وما هي فصيلة الدم وما هي المدينة (لأنه صعب أن يلتزم كل إنسان بـ بنفس الترتيب )

والتمييز بنها سهل: فرقم الجوال كما قلنا هو: مجرد رقم أو رقم بعد حذف علامة الزائد إن وجدت .

والفصيلة معروفة فتكون في نفس البرنامج مصفوفة بفصائل الدم فإن كان المتغير منها فنعم وإلا فلا

والنص الآخر هو اسم المدينة والسلام..

5- الآن يصيغ البرنامج هذه المتغيرات على شكل عنوان url لصفحة ثم يطلب تلك الصفحة .

مثل :

http://www.freeblood.com/bloodSMS.php?p=966512345678&c=makkah&b=A+

6- إن لم يتم فتح الصفحة أو حصلت مشكلة فيخزن تقرير عنها في ملف

7- ينتهي عمل البرنامج هنا ، ولكن يظل يعمل في الخلفية .

شروط البرنامج :

1- أن يكون مفتوح المصدر لأن الموقع وقف لله وهو خيري فلا نريد أن يكون الخير مرهون بشركة أو بشخص يكون الموقع تحت رحمته أوتفرغه أو حياته.

2 - لا يستقبل الجوال رسائل متكررة من جوال واحد إلا بعد مضي ربع ساعة .

3- أن يكون شغال في كل مرة تصل رسالة جديدة إلى الجوال .

4- أن يكون سهل الصياغة والتعديل لأنه سيكون عليه خدمات أخرى :

مثل تحديث بيانات العضو المتبرع كأن يريد تعديل رقم الجوال ، أو تحديث آخر وقت تم التبرع فيه، أو طلب التسجيل وهذه سيأتي وقتها إن شاء الله.

وهذه الشروط ليست إن شاء الله صعبة فهي شيء قليل مقابل ما تحصل عليه من الأجر وممن يدعو لك بخير

هذا ما وسعني أن أكتبه عن هذه الخدمة التي آمل أن تتعاونوا معنا في تفعيلها لله عز وجل ولمصلحة المسلمين وكل إنسان .

post-71437-1163903634_thumb.png

تم تعديل هذه المشاركة بواسطة أبو محمد اللحياني في 19 نوفمبر 2006 في 05:56

ولو وافيت ربك دون ذنب *** وناقشك الحساب إذاً هلكتا

ولم يظلمك في عملٍ ولكن *** عسير أن تقوم بما حملتا

#2

النظام الذي أدرجته لا يتطلب وجود برنامج في داخل الجوال. بل يتطلب وسيط يستقبل الرسائل ويحللها ويرسلها غيرها.

أنصحك أن تنقل هذا الموضوع إلى منتدى برمجة التطبيقات لأن هذا البرنامج تستطيع عمله بكثير من اللغات البرمجية وليست قاصرة على J2ME أو Java. كما أن ذاك المنتدى عام فالكثير يزوره.

/index.php?showforum=58

بالتوفيق!

#3
اقتباس
النظام الذي أدرجته لا يتطلب وجود برنامج في داخل الجوال. بل يتطلب وسيط يستقبل الرسائل ويحللها ويرسلها غيرها.

عفواً أخي حسام لم أفهم ماذا تقصد ؟؟ هل هناك وسيلة أسهل من رسائل الجوال ؟ وهل هناك وسيط آخر غير الجوال يستقبل رسائل الجوال ؟ أرجو أن تسعفنا بمرئياتك .

هل تقصد أن يكون الوسيط على شبكة الإنترنت أما ماذا ؟؟

وكما قلت لك أن القليل من المستخدمين من يتصل بالجوال على الإنترنت فالأفضل توفير وسيط أرخص هو أن يرسلها إلى جوال مثله وفي بلده هو المستحسن .

اختارت أسرة الموقع الإعتماد على رسائل الجوال لأنها وسيلة في متناول كل إنسان تقريباً .

وتصوري أن المحتاج للتبرع بالدم لما يرسل رسالة جوال فالأفضل أن يرسلها إلى جوال مثله، وأيضاً الأفضل أن يستقبل الرد كرسالة إلى جواله هو ،

أنا أعتقد انه لا بد من جوال يستقبل الرسائل فالبرنامج لا بد أن يكون داخل الجوال .

واخترت لغة الجافا لأنها هي السائدة وتشتغل في كل الجوالات - والله أعلم - أنا لا أتعصب لها ولكن لو تبرع به مبرمج .NET فجزاه الله خيراً .

ولا أمانع من نقل الموضوع إلى أي منتدى آخرى يراه المشرفين مناسباً .

تم تعديل هذه المشاركة بواسطة أبو محمد اللحياني في 19 نوفمبر 2006 في 21:57

ولو وافيت ربك دون ذنب *** وناقشك الحساب إذاً هلكتا

ولم يظلمك في عملٍ ولكن *** عسير أن تقوم بما حملتا

#4

السلام عليكم،،

الموضوع كما شرحته أنت.

صاحب الشأن يرسل رسالة إلى رقم جوال خاص مثلا 1234567891-

2- يستقبل الرسالة جوال مربوط بحاسب.

3- الحاسب يقرأ الرسالة التي تحوي المدينة المراد البحث فيها وفصيلة الدم.

4- يبحث الحاسب عن المعلومات اللازمة.

5- يرسل الحاسب رسالة إلى العميل ببعض الأرقام التي وجدها.

أنت في النهاية تحتاج إلى برنامج يعمل في حاسب ولا تحتاج إلى برنامج يعمل في الجوال الذي يستقبل الرسالة.

توجد برامج جاهزة لقراءة الرسائل من الجوال الموصولة بالحاسب. أمر القراءة والإرسال سهل. وأذكر وجود مثل هذه البرامج بالجافا وأعتقد وجود مثلها في لغات محتلفة.

بارك الله فيكم،، فهذه الصفحة من أفضل ما وجد على الشبكة.

#5

وعليكم السلام ورحمة الله وبركاته

أشكرك أخي حسام على اهتمامك ، ولكن :

اقتباس
أنت في النهاية تحتاج إلى برنامج يعمل في حاسب ولا تحتاج إلى برنامج يعمل في الجوال الذي يستقبل الرسالة.

لماذا ؟؟

أسرة الموقع اختارت أن يكون البرنامج على الجوال وليس على جهاز PC لأمور كثيرة :

1 - أن الموقع الآن يستطيع والحمد لله أن يرسل رسائل الجوال إلى أكثر دول العالم فالخدمة تعمل في الموقع وأيضاً هو سيستقبل الطلبات ليس فقط من الجوال بل من البريد ومن صفحة في الموقع يدخلها الزوار، فمادام أن الخدمة شغالة في الموقع فلا داعي لتشغيلها في جهاز آخر.

2- البرنامج المطلوب بسيط جداً ولا يتحمل هذا التطويل حتى أنه لا يحتاج إلى واجهةً فقط فقط يستقبل ثم يرسل ولا يقوم بمهمات كثيرة كما شرحته آنفاً .

3- الشركة التي أخذنا منها (إرسال رسائل الجوال من الموقع) تغطي أغلب دول العالم ، وليس عندي خلفية عن هذا الأمر من جهاز PC في أحد البيوت.

4 - وجود الخدمة عند شركة متكفلة بذلك وتحافظ على استمراريته وأقصد بذلك ( شركة الاستضافة وشركة خدمة رسائل SMS ) فهذا والله أعلم أفضل من رجل يتبرع بجهاز يكون متصل بالإنترنت أو يكون عنده خط دولي .

5- أعتقد أن الاقتصار على الجوال والجوال فقط في استلام الرسائل وإرسالها إلى الموقع أفضل من التطويل واستخدام جوال يستقبل الرسائل وجهاز يأخذ الرسائل من الجوال ويعالجها .

6 - أن قاعدة البيانات المحتوية على أرقام المتبرعين هي في الموقع ومن الصعب التضحية بأسرار الناس وإخراجها من الموقع أو عمل تحديث لقاعدة البيانات التي في الجهاز من قاعدة البيانات التي في الموقع يومياً .

قد يكون تشغيل الخدمة على جهار pc وليس على جوال صحيح إذا كان :

1- أن تكون برامج الجافا لا تستطيع أن تستشعر وصول رسالة إلى الجوال ، فهل هي كذلك، فإن كانت كذلك فلا مانع من نقل الموضوع إلى منتدى مناسب .

2- إرسال الرسالة من الجهاز وليس من الموقع أقل تكلفة مادية ؟ وهذا لا أستطيع الجزم به وإرسالها من الموقع يكلف 13 هللة لكل رسالة .

ولو وافيت ربك دون ذنب *** وناقشك الحساب إذاً هلكتا

ولم يظلمك في عملٍ ولكن *** عسير أن تقوم بما حملتا

#6

حسنا، إليك ما وجدت...

لا يمكن لبرنامج J2ME يعمل في داخل الجوال أن يستقبل رسالة SMS عادية مرسلة من جوال آخر.

يمكن لبرنامج J2ME يعمل في داخل الجوال أن يستقبل رسالة SMS مرسلة من برنامج آخر J2ME.

زبدة القول أن برنامج J2ME يستقبل رسائل SMS خاصة من PORT خاص في داخل الجوال.

هذا شيء.

--------------------

والشيء الآخر هو تغيير بسيط في الفكرة التي طرحتها سابقا.

أن تصنع برنامجا يعمل في الحاسب وظيفته قراءة الرسائل التي وصلت جوالا معينا. بعدها يحللها، ويحولها إلى طلب إلى صفحة بنك الدم.

1- يرسل الشخص رسالة إلى الرقم 15555555.

2- تصل الرسالة إلى الجوال الموصول بالحاسب.

3- يقوم الحاسب بقراءة الرسالة.

4- يحلل الرسالة ليقوم بتحويلها إلى وصلة خاصة إلى بنك الدم.

5- يرسل الطلب إلى موقع بنك الدم.

6- يقوم موقع بنك الدم بعمل ما يلزم من بحث وإرسال النتائج إلى مرسل الرسالة الأصلي.

لاحظ مرة أخرى أنك تستطيع تنفيذ مثل هذا البرنامج بسهولة بأي لغة نظريا.

ورأيت عدة أدوات تسهل هذه العملية.

بالتوفيق!

#7

معليش ممكن توضح أكثر

لقد ذكر - حزاك الله خير - أن برامج الجافا تستطيع استقبال رسائل الجوال في الجوالات التي تدعم MIDP 2.0 في الموضوع

/index.php?showtopic=111895

\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

أنا مبرمج باللغة delphi وإن شاء الله أوفق في عمل البرنامج في جهاز PC فهل ممكن تدلنا على كيفية استقبال رسائل الجوال من جهاز آخر أعطيني رابط أبدأ منه .

ولو وافيت ربك دون ذنب *** وناقشك الحساب إذاً هلكتا

ولم يظلمك في عملٍ ولكن *** عسير أن تقوم بما حملتا

#8

لست خبيرا في SMS باستخدام J2ME لكن هذا ما اتضح لي. ربما يساعد الإخوان في هذا.

هذه بعض الأدوات التي تساعدك في ربط الحاسب بالجوال. وفيها كيفية ربط الجافا وغيرها من اللغات.

http://www.developershome.com/sms/freeLibForSMS.asp

بالمناسبة،، أذكر وجود أمثلة في هذا المنتدى عن كيفية عمل هذا.

بالتوفيق!

#9

أخي العزيز حسام والأخوان الطيبية في منتدى الجافا

بصراح أنا بدأت في برنامج على PC يستلم الرسائل sms من الجوال

ولكني حسيت بالطفش والملل لأمور كيثرة منها أني لست متفرغ له بحكم الدوام والشغل الموسمي والمشاريع الأخرى

واستكثرت هذا التطويل على برنامج بسيط جداً

هل بإمكانكم أن يكون البرنامج يشتغل في الذاكرة ويفحص صندوق الوارد كل ؟؟ ( 5 دقائق ) ؟؟ .

وجدت هذا الكود وليس عندي الخبرة والوقت الكافيين لمعرفة عمله والتعديل عليه فهل تستطيعون التعديل عليه أو إنشاء كود مماثل كما شرحت سابقاً

import java.io.*;
import javax.microedition.io.*;
import javax.microedition.lcdui.*;
import javax.microedition.midlet.*;
import javax.wireless.messaging.*;

// A WMA test application that opens a server
// connection on the specified port and waits
// for text messages to arrive. It then sends
// the reversed text message back to the client.

public class WMATest extends MIDlet
implements CommandListener,
MessageReceiver,
Runnable {

// The application data

private Display				 display;
private String				  port = "1000";
private Form					setupForm;
private TextField			   portTF;
private Form					statusForm;
private MessageConnection	   currentConn;
private MessageReceiverListener messageListener;

// Our commands

public static final Command exitCommand =
new Command( "Exit",
Command.EXIT, 1 );

public static final Command okCommand =
new Command( "OK",
Command.OK, 1 );

public static final Command resetCommand =
new Command( "Reset",
Command.SCREEN, 1 );

public WMATest(){
}

// Adds a message to the status form.

public void addStatus( String msg ){
statusForm.append( msg );
}

// Handles the screen events.

public void commandAction( Command c,
Displayable d ){
if( c == exitCommand ){
exitMIDlet();
} else if( c == okCommand ){
port = portTF.getString();
new Thread( this ).start();
} else if( c == resetCommand ){
closeConnection();
getDisplay().setCurrent( setupForm );
}
}

// Clears the status form.

private void clearStatus(){
int s;

while( ( s = statusForm.size() ) > 0 ){
statusForm.delete( s-1 );
}

addStatus( "Waiting for messages on port " +
port );
}

// Closes the current server connection, if any.

private void closeConnection(){
if( currentConn != null ){
try {
currentConn.close();
}
catch( IOException e ){
}

currentConn = null;
}
}

// Called by system to destroy the MIDlet.

protected void destroyApp( boolean unconditional )
throws MIDletStateChangeException {
exitMIDlet();
}

// General cleanup.

public void exitMIDlet(){
if( messageListener != null ){
messageListener.stop();
messageListener = null;
}

closeConnection();
notifyDestroyed();
}

// Returns the MIDlet's display object.

public Display getDisplay(){ return display; }

// Handles errors simply using an alert to
// display the exception.

private void handleError( Throwable e, Displayable next ){
Alert a = new Alert( "Exception",
e.toString(),
null,
AlertType.ERROR );
a.setTimeout( Alert.FOREVER );
getDisplay().setCurrent( a, next );
}

// Initializes the MIDlet by creating the two forms
// as well as the message listener.

protected void initMIDlet(){
messageListener = new MessageReceiverListener( this );

setupForm = new Form( "Receiver Setup" );
setupForm.addCommand( exitCommand );
setupForm.addCommand( okCommand );
setupForm.setCommandListener( this );

portTF = new TextField( "Port number:", port,
5, TextField.NUMERIC );

setupForm.append( portTF );

statusForm = new Form( "Status" );
statusForm.addCommand( resetCommand );
statusForm.addCommand( exitCommand );
statusForm.setCommandListener( this );

getDisplay().setCurrent( setupForm );
}

// Implements the MessageReceiver interface. Called
// when an error occurs while receiving a message.

public void messageError( MessageConnection conn,
Throwable excep ){
handleError( excep, statusForm );
}

// Implements the MessageReceiver interface. Called
// when a message has been successfully received.

public void messageReceived( MessageConnection conn,
Message msg ){
if( messageListener == null ) return;
if( conn != currentConn ) return;

if( msg instanceof BinaryMessage ){
addStatus( "Ignoring binary message" );
return;
}

TextMessage tmsg = (TextMessage) msg;
String text = tmsg.getPayloadText();
String addr = tmsg.getAddress();

addStatus( "Received " + text );

if( addr == null ){
addStatus( "No return address, ignoring" );
return;
}

if( text != null ){
StringBuffer b =
new StringBuffer( text.length() );
b.append( text );
b.reverse();
tmsg.setPayloadText( b.toString() );

addStatus( "Sending reverse to " + addr );

try {
conn.send( tmsg );
}
catch( IOException e ){
handleError( e, statusForm );
}
}
}

// Called by the system to pause the MIDlet.

protected void pauseApp(){
}

// Creates the server connection. This needs to run in
// a separate thread to avoid blocking the user interface,
// since the device may prompt the user to confirm
// that the application has permission to use wireless
// connectivity.

public void run(){
closeConnection();

String url = "sms://:" + port;

try {
// Create the connection and register it with
// the message listener.

currentConn = (MessageConnection)
Connector.open( url );
currentConn.setMessageListener( messageListener );

// Move to the status form.

getDisplay().setCurrent( statusForm );
clearStatus();
}
catch( IOException e ){
handleError( e, setupForm );
}
}

// Called by the system to activate the MIDlet.

protected void startApp()
throws MIDletStateChangeException {
if( display == null ){
display = Display.getDisplay( this );
initMIDlet();
}
}
}

ولكم جزيل الشكر والإمتنان والأجر العظيم من الله الكريم

ولو وافيت ربك دون ذنب *** وناقشك الحساب إذاً هلكتا

ولم يظلمك في عملٍ ولكن *** عسير أن تقوم بما حملتا

#10

البرنامج الذي أرفقته يعمل على الجوال، وسيستقبل رسائل SMS خاصة والله أعلم على منفذ معين،، ولن يقرأ الرسائل العامة..

البرنامج الذي طلبته سهل جدا،، وأكثر مما تتخيل..

لن أستطيع مساعدتك فليس عندي الوقت.. لكن أتوقع الإخوان موجودين..

كما أقترح عليك أن تضع عليه مبلغ مالي وتعلن عنه في منتدى الإعلانات.. بهذا تكسب أنت الأجر.. وستستمتع بتنفيذ ممتاز بإذن الله.. كما ستحصل عليه أسرع...

بالتوفيق!

#11

من فهم فكرة البرنامج وكان عنده استطاعة لعمل البرنامج المذكور وبدون إعادة شرح فليتواصل معنا على البريد yusifpc@hotmail.com

عاجل !!!

ولو وافيت ربك دون ذنب *** وناقشك الحساب إذاً هلكتا

ولم يظلمك في عملٍ ولكن *** عسير أن تقوم بما حملتا

هذا الموضوع مغلق.

مواضيع مشابهة