ïŒïŒ/ usr / bin / perlïŒã¢ãžã¥ãŒã«Timeãã©ã°ã€ã³:: HiResããã³ã€ã³ããŒãïŒçŸåšã®ããŒã ã¹ããŒã¹é¢æ°sleepïŒãã®é¢æ°ã®æ©èœã¯ãæå®ããæ©èœã§ãïŒ1ç§æªæºã®é 延Time :: HiRes qw ïŒ sleep ïŒã䜿çšã ãŸããïŒã³ãŒãåæåå ã³ãŒããå«ãcc_cause.plãã¡ã€ã«ãå«ããïŒãããã®ã³ãŒãã¯ãé話çµäºã®çç±ã瀺ããŠããŸãïŒãã®ã¹ã¯ãªããã¯äœ¿çšãããŸããããæžã蟌ã¿çšå®å šãªãã€ã€ã©ãŒã¯ãããåæããå¿ èŠããããŸãåºåã®ãã©ã¡ãŒã¿^ CENDïŒcall_indexãdurationãend_statusãcc_causeïŒmyïŒ cc_cause = do 'cc_cause.pl';ïŒã³ãŒããå«ããã¡ã€ã«end_status.plãã€ã³ã¯ã«ãŒãããŸãendindåå ã³ãŒããåŒã³åºããŸãïŒãããã®ã³ãŒãã¯ãé話çµäºåŸã®ããã€ã¹ã®ã¹ããŒã¿ã¹ã衚瀺ããŸãïŒãã®ã¹ã¯ãªããã¯äœ¿çšãããŸããããæžã蟌ã¿çšå®å šãªãã€ã€ã©ãŒã¯ãããåæããå¿ èŠããããŸãåºåã®ãã©ã¡ãŒã¿^ CENDïŒcall_indexãdurationãend_statusãcc_causeïŒmyïŒ end_status = do 'end_status.pl';ïŒè©³çŽ°ïŒïŒCENDã¿ã€ãã®ã¡ãã»ãŒãžã¯ãé話ãçµäºãããšã¢ãã ã«ãã£ãŠçºè¡ãããŸãïŒããã³é話ã«é¢ããæ å ±ãé話çµäºã®çç±ã«é¢ããæ å ±ãå«ãïŒããã³ããã€ã¹ã®ã¹ããŒã¿ã¹ã«ã€ããŠãïŒåºå圢åŒ^ CENDïŒcall_indexãdurationãend_statusãcc_causeïŒããã§ïŒïŒcall_index-äžæã®åŒã³åºãèå¥åïŒduration-ç§åäœã®é話æéïŒend_status-é話çµäºåŸã®ããã€ã¹ã¹ããŒã¿ã¹ã³ãŒãïŒcc_cause-é話ãçµäºããçç±ã³ãŒãïŒã¢ãã ãOS LinuxãæèŒããã³ã³ãã¥ãŒã¿ãŒã«æ¥ç¶ããå ŽåïŒ3 USBã€ã³ã¿ãŒãã§ã€ã¹ã¯ãã¢ãã ãšã®ããŒã¿äº€æã®ããã«äœæãããŸãïŒéåžžããïŒïŒ/ dev / ttyUSB0-ã¢ãã ã³ãã³ãã€ã³ã¿ãŒãã§ã€ã¹ïŒ/ dev / ttyUSB1-é³å£°ïŒé³å£°ã¢ãŒãããªã³ã®å ŽåïŒã¢ãã ã€ã³ã¿ãŒãã§ã€ã¹ïŒ/ dev / ttyUSB2-ã¢ãã ã³ãã³ãã©ã€ã³ã€ã³ã¿ãŒãã§ã€ã¹ã ãã®ç¹ã§/ dev / ttyUSB0ãšã¯ç°ãªããŸãïŒã¢ãã ã®ã³ãã³ãã«å¯Ÿããå¿çã ãã§ãªãããµãŒãã¹ã«å¯Ÿããå¿çãèªãããšãã§ããïŒã¡ãã»ãŒãžã ä¿¡å·å質ããŒã¿ã^ CENDåºåãªã©ãïŒã¢ãã ã«ãµãŠã³ããéä¿¡ããããŒãã瀺ããŸã$ VOICE_PORT = "/ dev / ttyUSB1" ;ïŒã¢ãã ã³ãã³ããæäŸããããŒãã瀺ããŸã$ COMMAND_PORT = "/ dev / ttyUSB2" ;ïŒèšå®ïŒïŒ0-ãããã°åºåãç¡å¹ã«ããïŒ1-ãããã°åºåãæå¹ã«ãã$ VERBOSE = 1 ;ïŒèªã¿åãããã³æžã蟌ã¿çšã«ã¢ãã ã³ãã³ãããŒããéã$ SENDPORT ã '+ <' ã $ COMMAND_PORTã éãããã '$ COMMAND_PORT'ãéããŸããïŒ$ïŒ \ n ã ;ïŒèªã¿åããšæžã蟌ã¿ã®ããã«ã¢ãã ã®é³å£°ããŒããéããŸãïŒããŒãããã®ãªãŒãã£ãªã¹ããªãŒã ã®èªã¿åãã¯ããã®ããã°ã©ã ã§ã¯äœ¿çšãããŸããïŒãã ãããã®ã¹ã¯ãªãããçå®çªé»è©±ã«å€ããããšã劚ãããã®ã¯äœããããŸãããããšãã°ã$ SENDPORT_WAV ã '+ <' ã $ VOICE_PORTãéã ã ã ã '$ VOICE_PORT'ãéããŸããïŒ$ïŒ \ n ã ;ïŒãµãã¹ã¯ã©ã€ããŒã«é¢ããããŒã¿ãå«ããã¡ã€ã«list.01.plãå«ããŸãç§ã® @user_list = do 'list.01.pl' ;ïŒ2ã€ã®ãã©ã¡ãŒã¿ãŒãéä¿¡ããåŒã³åºãé¢æ°ãåŒã³åºããŸããïŒ1-ãã€ã¹ã¡ãã»ãŒãžãã¡ã€ã«åïŒ2-ãµãã¹ã¯ã©ã€ããŒããŒã¿é åcall_list ïŒ "test.voice.raw" ã \ @user_list ïŒ ;ïŒåŒã³åºãã®æåŸã«ãéããŠãããã¹ãŠã®ãã¡ã€ã«/ããŒããéããŸãexit_call ïŒ ïŒ ;ïŒãã®é¢æ°ã¯ãªã¹ãäžã®ãµãã¹ã¯ã©ã€ããŒãåŒã³åºããŸãsub call_list {ïŒé³å£°ã¡ãã»ãŒãžã§ãã¡ã€ã«åãååŸç§ã® $ l_file = shift ;ïŒè³Œèªè ã«é¢ããããŒã¿ãå«ããªã¹ããžã®ãªã³ã¯ãååŸç§ã® $ l_list = shift ;ïŒé³å£°ã¡ãã»ãŒãžã§ãã¡ã€ã«ããããŒã¿ãããŒãç§ã® $ l_voice = load_voice ïŒ $ l_file ïŒ ;ïŒãã®ãµã€ã¯ã«ã¯ããµãã¹ã¯ã©ã€ããŒã®ãªã¹ããå®è¡ããŸãïŒãã€ã€ã«ããããšããforeach $ l_info ïŒ @ { $ l_list } ïŒ {ïŒå å ¥è ã«ãã€ã€ã«ããæ©èœãåŒã³åºãç§ã® $ l_msg = call_one ïŒ $ l_info ã $ l_voice ïŒ ;ïŒåä¿¡ããã¡ãã»ãŒãžã衚瀺ããprint $ l_msg ;ïŒæ¬¡ã®äººã«é»è©±ããåïŒ3ç§åŸ ã¡ãŸããç¡ç 3 ;}}ïŒãã®é¢æ°ã¯ãæå®ãããçªå·ã®åŒã³åºããè©Šã¿ãŸãïŒããã³æåããå Žå-é³å£°ã¡ãã»ãŒãžããããŒããã£ã¹ãããŸãsub call_one {ç§ã® $ l_info = shift ; ïŒçŸåšã®ãµãã¹ã¯ã©ã€ãããŒã¿ã䜿çšããããã·ã¥ç§ã® $ l_bufer = shift ; ïŒããããŒã¡ãã»ãŒãžã®320ãã€ããã£ã³ã¯ã®é åïŒãã®ã³ãã³ãã«ã¯ãã¢ãã ã®é³å£°ã¢ãŒããå«ãŸããŸãïŒäžåºŠæå¹ã«ãããšãåé€/å枬å®ã§ããŸãïŒãã®ã³ãã³ãã ã¢ãã ã¯ç¶æ ãèšæ¶ããŸãã#at_sendïŒ 'AT ^ CVOICE = 0'ïŒ;ïŒã¢ãã ã«çªå·ãåŒã³åºã$ l_info-> {phone}ïŒã¢ãã ããã®å¿çãæåŸ ïŒïŒOK-æ£åžžã«ãã€ã€ã«ãããŸããïŒNO CARRIER-ã»ã«ã©ãŒãããã¯ãŒã¯ãžã®æ¥ç¶ãªãmy $ l_rec = at_send ïŒ "ATD $ l_info-> {phone};" ã qr / ïŒ OK | NO CARRIER ïŒ / ïŒ ;ïŒãã€ã€ã«ã¢ãããçºçããªãã£ãå Žåãé¢æ°ãçµäºããŠå¯Ÿå¿ããã¡ãã»ãŒãžãè¿ããŸãreturn "賌èªè $ l_info-> {name} [$ l_info-> {phone}]éç¥ãªãããããã¯ãŒã¯ãªã\ n " if $ l_rec eq 'NO CARRIER' ;ïŒå å ¥è ãé»è©±ã«åºããšããæåŸ ããïŒCONNïŒ....-å å ¥è ãé»è©±ãåããŸããïŒCENDïŒ....-ãµãã¹ã¯ã©ã€ããŒãå©çšã§ããªããé話äžããŸãã¯é話ãåæãã$ l_rec = at_rec ïŒ qr / \ ^ïŒCONN \ïŒ1 \ã0 | CEND \ :) / ïŒ ;ïŒå å ¥è ãé»è©±ã«åºãªãå Žåãæ©èœãçµäºããŠå¯Ÿå¿ããã¡ãã»ãŒãžãè¿ãreturn "賌èªè $ l_info-> {åå} [$ l_info-> {phone}]ã¯éç¥ãããŸãããã¢ã¯ã»ã¹äžå¯ãŸãã¯ãªã»ãã\ n " if $ l_rec eq 'CENDïŒ' ;ïŒã¢ãã ãé³å£°åä¿¡/éä¿¡ã¢ãŒãã«åãæ¿ããŸãïŒOK-åãæ¿ãã¯æåããŸããïŒãšã©ãŒ-åãæ¿ãã«å€±æããŸããïŒCENDïŒ....-ãµãã¹ã¯ã©ã€ããŒãå©çšã§ããªããé話äžããŸãã¯é話ãåæãã$ l_rec = at_send ïŒ 'AT ^ DDSETEX = 2' ã qr / ïŒ OK | ERROR | CEND \ :) / ïŒ ;ïŒé³å£°ã¢ãŒããžã®åãæ¿ãã«å€±æããå ŽåããŸãã¯ãµãã¹ã¯ã©ã€ããŒãçºçããªãã£ãå ŽåïŒãã³ãã»ãã-é¢æ°ãçµäºãã察å¿ããã¡ãã»ãŒãžãè¿ãreturn "賌èªè $ l_info-> {name} [$ l_info-> {phone}]éç¥ãªããã¢ã¯ã»ã¹äžå¯ãŸãã¯ãªã»ãã\ n " if $ l_rec ne 'OK' ;ïŒããã«çããå Žåãé話ã確ç«ãããŠãããå å ¥è ãé»è©±ã«åºãããšãæå³ããŸãïŒã¢ãã ãžã®é³å£°ã¯ã0.02ç§ããšã«320ãã€ãã®éšåã§éä¿¡ãããå¿ èŠããããŸãïŒãµãŒãã¹å€æ°ãèšå®ããŸã$ | ãŠãããããšã«ãããã¯ãããã¡ãªã³ã°ãç¡å¹ã«ããŸããïŒãã®ããã«ããŠãããŒã¿ã¯ããã«ãµãŠã³ãããŒãã«éä¿¡ãããŸãã$ | = 1 ;ïŒé³å£°ã¡ãã»ãŒãžã®320ãã€ããã£ã³ã¯ã«ãããããã¡ã«ãŒãforeach my $ c ïŒ @ { $ l_bufer } ïŒ {ïŒæ¬¡ã®ããŒã¹ãã¢ãã ã®é³å£°ããŒãã«èšé²ããŸãsyswrite $ SENDPORT_WAV ã $ c ã 320 ;ïŒãµã€ã¯ã«ãç¶è¡ããåã«0.02ç§åŸ æ©ããŸãç¡ç ïŒ 0.02 ïŒ ;}ïŒå話åšã眮ããŸããat_send ïŒ 'AT + CHUP' ïŒ ;ïŒæåããéç¥ã«é¢ããã¡ãã»ãŒãžãè¿ããŸããreturn "賌èªè $ l_info-> {name} [$ l_info-> {phone}]æåéç¥\ n " ;}ïŒãã®é¢æ°ã¯ãé³å£°ã¡ãã»ãŒãžã320ãã€ãã®æçã®é åã«ããŒãããŸãïŒ1ã€ã®ãã©ã¡ãŒã¿ãŒãåããŸã-ãã¡ã€ã«åïŒãªãŒãã£ãªããŒã¿åœ¢åŒ-pcmãmonoã8000ãã«ãã16ãããã眲åããsub load_voice {ç§ã® $ l_file_name = shift ;my $ l_fh = new IO :: ãã¡ã€ã« "<$ l_file_name" ãŸã㯠die "$ l_file_nameãéããŸããïŒ$ïŒ" ;binmode ïŒ $ l_fh ïŒ ;ç§ã® @l_bufer = ïŒ ïŒ ;while ïŒ read ïŒ $ l_fh ã $ l_bufer [ $ i ] ã 320 ïŒ ïŒ { $ i ++; }close $ l_fh ;return \ @l_bufer ;}ïŒãã®é¢æ°ã¯ãã³ãã³ããã¢ãã ã³ãã³ãããŒãã«éä¿¡ããŸãïŒæ£èŠè¡šçŸã§ç€ºãããå¿çãåŸ ã€ïŒ2ã€ã®ãã©ã¡ãŒã¿ãŒãåããŸãïŒïŒ1-ããŒã ïŒ2-äºæ³ãããåçã®ãªãã·ã§ã³ãèšè¿°ããæ£èŠè¡šçŸïŒããã©ã«ãã¯OKïŒsub at_send {ç§ã® $ l_cmd = shift ;ç§ã® $ l_rx = ã·ãã || qr /ïŒOKïŒ/ ;print $ SENDPORT "$ l_cmd \ r " ;print "SENDïŒ[$ l_cmd] \ n " if $ VERBOSE ;return at_rec ïŒ $ l_rx ïŒ ;}ïŒãã®é¢æ°ã¯ãã¢ãã ããã®ã¢ãã å¿çãæåŸ ããŸãïŒ1ã€ã®ãã©ã¡ãŒã¿ãŒãåãåã-äºæ³ãããåçã®ãªãã·ã§ã³ã説æããæ£èŠè¡šçŸïŒããã©ã«ãã¯OKïŒsub at_rec {ç§ã® $ l_rx = ã·ãã || qr / OK / ;ç§ã® $ recive = '' ;while ïŒ ïŒ ïŒ $ recive =ã $ l_rx ïŒ ïŒ {$ recive = < $ SENDPORT >;$ recive = ãs / [ \ n \ r ] + // msg ;print "RECIVEïŒ[$ recive] \ n " if $ VERBOSE && $ recive ;}$ recive =ã $ l_rx ;print "END RECIVEïŒ[$ recive] [$ 1] [$ l_rx] \ n " if $ VERBOSE ;ãªã¿ãŒã³ $ 1 ;}ïŒãã®é¢æ°ã¯ã以åã«éããã¢ãã ããŒããéããŸãsub exit_call {å°å· "éç¥ãçµäºããŸãã\ n " ;$ SENDPORT_WAVãéã ãŸããat_send ïŒ 'AT + CHUP' ïŒ ;$ SENDPORTãéã ãŸãã}
ïŒãµãã¹ã¯ã©ã€ããŒã®ãªã¹ããïŒããã¯ãåãšã³ããªã«å«ãŸããããã·ã¥é åã®é åã§ãïŒå å ¥è ããŒã¿ïŒïŒé»è©±-å å ¥è ã®é»è©±ïŒname-ãµãã¹ã¯ã©ã€ããŒã®ååïŒå å ¥è ã«é¢ããä»ã®ããŒã¿ãä¿åããããšãå¯èœã§ãïŒ{é»è©±=> '+79111234567' ãåå=> 'Petrov Petr Petrovich' } ã{é»è©±=> '+79117654321' ãåå=> 'Vasilyev Vasily Vasilyevich' }ïŒ ;
ïŒåæåå ïŒccïŒã³ãŒãïŒè±èªhttp://www.eversoft.net/dcc.htmlïŒãã·ã¢èªhttp://ru.wikipedia.org/wiki/Q.931ïŒHuaweiã®ããïŒHUAWEI CDMAããŒã¿ã«ãŒãã¢ãã ATã³ãã³ãã€ã³ã¿ãŒãã§ã€ã¹ä»æ§ïŒ "http://www.letswireless.com.cn/asp_bin/downfile/2009929121443234.pdf"ïŒïŒHUAWEI UMTSããŒã¿ã«ãŒãã¢ãã ATã³ãã³ãã€ã³ã¿ãŒãã§ã€ã¹ä»æ§ïŒ "http://www.net139.com/UploadFile/menu/HUAWEI%20UMTS%20Datacard%20Modem%20AT%20Command%20Interface%20Specification_V2.3.pdf"ïŒ'1' => 'UNASSIGNED_CAUSE' ã'3' => 'NO_ROUTE_TO_DEST' ã'6' => 'CHANNEL_UNACCEPTABLE' ã'8' => 'OPERATOR_DETERMINED_BARRING' ã'16' => 'NORMAL_CALL_CLEARING' ã'17' => 'USER_BUSY' ã'18' => 'NO_USER_RESPONDING' ã'19' => 'USER_ALERTING_NO_ANSWER' ã'21' => 'CALL_REJECTED' ã'22' => 'NUMBER_CHANGED' ã'26' => 'NON_SELECTED_USER_CLEARING' ã'27' => 'DESTINATION_OUT_OF_ORDER' ã'28' => 'INVALID_NUMBER_FORMAT' ã'29' => 'FACILITY_REJECTED' ã'30' => 'RESPONSE_TO_STATUS_ENQUIRY' ã'31' => 'NORMAL_UNSPECIFIED' ã'34' => 'NO_CIRCUIT_CHANNEL_AVAILABLE' ã'38' => 'NETWORK_OUT_OF_ORDER' ã'41' => 'TEMPORARY_FAILURE' ã'42' => 'SWITCHING_EQUIPMENT_CONGESTION' ã'43' => 'ACCESS_INFORMATION_DISCARDED' ã'44' => 'REQUESTED_CIRCUIT_CHANNEL_NOT_AVAILABLE' ã'47' => 'RESOURCES_UNAVAILABLE_UNSPECIFIED' ã'49' => 'QUALITY_OF_SERVICE_UNAVAILABLE' ã'50' => 'REQUESTED_FACILITY_NOT_SUBSCRIBED' ã'55' => 'INCOMING_CALL_BARRED_WITHIN_CUG' ã'57' => 'BEARER_CAPABILITY_NOT_AUTHORISED' ã'58' => 'BEARER_CAPABILITY_NOT_PRESENTLY_AVAILABLE' ã'63' => 'SERVICE_OR_OPTION_NOT_AVAILABLE' ã'65' => 'BEARER_SERVICE_NOT_IMPLEMENTED' ã'68' => 'ACM_GEQ_ACMMAX' ã'69' => 'REQUESTED_FACILITY_NOT_IMPLEMENTED' ã'70' => 'ONLY_RESTRICTED_DIGITAL_INFO_BC_AVAILABLE' ã'79' => 'SERVICE_OR_OPTION_NOT_IMPLEMENTED' ã'81' => 'INVALID_TRANSACTION_ID_VALUE' ã'87' => 'USER_NOT_MEMBER_OF_CUG' ã'88' => 'INCOMPATIBLE_DESTINATION' ã'91' => 'INVALID_TRANSIT_NETWORK_SELECTION' ã'95' => 'SEMANTICALLY_INCORRECT_MESSAGE' ã'96' => 'INVALID_MANDATORY_INFORMATION' ã'97' => 'MESSAGE_TYPE_NON_EXISTENT' ã'98' => 'MESSAGE_TYPE_NOT_COMPATIBLE_WITH_PROT_STATE' ã'99' => 'IE_NON_EXISTENT_OR_NOT_IMPLEMENTED' ã'100' => 'CONDITIONAL_IE_ERROR' ã'101' => 'MESSAGE_NOT_COMPATIBLE_WITH_PROTOCOL_STATE' ã'102' => 'RECOVERY_ON_TIMER_EXPIRY' ã'111' => 'PROTOCOL_ERROR_UNSPECIFIED' ã'127' => 'INTERWORKING_UNSPECIFIED' ã'160' => 'REJ_UNSPECIFIED' ã'161' => 'AS_REJ_RR_REL_IND' ã'162' => 'AS_REJ_RR_RANDOM_ACCESS_FAILURE' ã'163' => 'AS_REJ_RRC_REL_IND' ã'164' => 'AS_REJ_RRC_CLOSE_SESSION_IND' ã'165' => 'AS_REJ_RRC_OPEN_SESSION_FAILURE' ã'166' => 'AS_REJ_LOW_LEVEL_FAIL' ã'167' => 'AS_REJ_LOW_LEVEL_FAIL_REDIAL_NOT_ALLOWD' ã'168' => 'MM_REJ_INVALID_SIM' ã'169' => 'MM_REJ_NO_SERVICE' ã'170' => 'MM_REJ_TIMER_T3230_EXP' ã'171' => 'MM_REJ_NO_CELL_AVAILABLE' ã'172' => 'MM_REJ_WRONG_STATE' ã'173' => 'MM_REJ_ACCESS_CLASS_BLOCKED' ã'174' => 'ABORT_MSG_RECEIVED' ã'175' => 'OTHER_CAUSE' ã'176' => 'CNM_REJ_TIMER_T303_EXP' ã'177' => 'CNM_REJ_NO_RESOURCES' ã'178' => 'CNM_MM_REL_PENDING' ã'179' => 'CNM_INVALID_USER_DATA'ïŒ ;
ïŒé話çµäºåå ã³ãŒãïŒHuaweiã®ããïŒïŒHUAWEI CDMAããŒã¿ã«ãŒãã¢ãã ATã³ãã³ãã€ã³ã¿ãŒãã§ã€ã¹ä»æ§ïŒ "http://www.letswireless.com.cn/asp_bin/downfile/2009929121443234.pdf"ïŒïŒHUAWEI UMTSããŒã¿ã«ãŒãã¢ãã ATã³ãã³ãã€ã³ã¿ãŒãã§ã€ã¹ä»æ§ïŒ "http://www.net139.com/UploadFile/menu/HUAWEI%20UMTS%20Datacard%20Modem%20AT%20Command%20Interface%20Specification_V2.3.pdf"ïŒ'0' => 'ããŒãã¯ãªãã©ã€ã³ã§ãã' ã'21' => 'ããŒãã¯äœ¿çšã§ããŸããã' ã'22' => 'é話ã¯æ£åžžã«çµäºããŸãã ã'23' => 'BSã«ããé話ãäžæãããŸããã ãã24ã => ãé話äžã«BSã¬ã³ãŒããåä¿¡ããŸãããã ã'25' => 'BSã¯ã³ãŒã«ããªãªãŒã¹ããŸãã ã'26' => 'BSã¯çŸåšã®SOãµãŒãã¹ãæåŠããŸãã ã'27' => 'BSåŒã³åºãããããŸãã ã'28' => 'BSããã¢ã©ãŒãåæ¢ãåä¿¡ããŸããã ã'29' => 'ã¯ã©ã€ã¢ã³ããšã³ãã«ãã£ãŠã³ãŒã«ãæ£åžžã«çµäºããŸãã ã'30' => 'çµäºã¢ã¯ãã£ããŒã·ã§ã³ãåä¿¡-OTASPã³ãŒã«ã ã'31' => 'MCã¯é話éå§ãŸãã¯é話ãçµäºããŸãã ã'34' => 'RUIMã¯å©çšã§ããŸããã' ã'99' => 'NDSSãšã©ãŒã ã'100' => 'rxdäžäœå±€ããã®çç±ãcc_causeã確èª' ã'101' => 'MSãã³ãŒã«ãéå§ããåŸããããã¯ãŒã¯ãå¿çããŸããã ã'102' => 'MSã¯çä¿¡ã³ãŒã«ãæåŠããŸãã ã'103' => 'ãããã¹ã«ãŒããã»ã¹äžã«ã³ãŒã«ãæåŠãããŸããã ã'104' => 'ãªãªãŒã¹ã¯ã詳现ã«ã€ããŠã¯ãã§ãã¯ããŠãã ãã' ã'105' => 'é»è©±æéã䜿ãæããããŸããã ã'106' => 'MSã¯ãµãŒãã¹ãåæ¢ããŠããŸã'ïŒ ;
Source: https://habr.com/ru/post/J192930/More articles:æ£èŠè¡šçŸè§£æLADEEæé¢ããã€ã¹ãæ£åžžã«èµ·åããŸãã+ NASAã¢ã«ãŠã³ããInstagramã«è¡šç€ºãããŸããããã·ã¥ïŒå€§äººçšã®ããããã³ã³ã¹ãã©ã¯ã¿ãŒãäœæããé©æ°çãªã¹ããŒãããŒã 調å åšãŠã£ãããã£ã¢ã¯èè ã®èª¿æ»ãå®æœããŸãFakapããããã¬ãŒãïŒãã¹ã¿ãŒã®æ¥ãèšå¿µããŠç§ãã¡ã®ãæ°ã«å ¥ãã®ãã°ã®ããã5çå®çæ³çãªé¡§å®¢ã«ãŒã«ãã©ãã¯ããŒã«ïŒã¹ãã£ã³ãã«ãé°è¬ã調æ»ZEUSïŒ3DãªãŒã«ã€ã³ã¯ã³ã³ããŒæ©ïŒ3Dããªã³ã¿ãŒ+ 3Dã¹ãã£ããŒ+ 3Dã³ããŒæ©+ FAXïŒAll Articles