/** * */ function do_fortune() { if (!isset($_REQUEST['target'])) { echo "target required."; return; } $target = intval($_REQUEST['target']); if ($target < 1 || $target > 4) { echo "unknown target."; return; } /* 回転開始 */ /* RSモーターは200ステップで1回転(二相励起)、400ステップで1回転(ハーフステップ) * 400/5 = 80 */ /* * 回転開始時はゼロ点にいるという前提で、回転し、10秒待って、ゼロ点に戻す */ //$rotate = 800; //$mode = 3; $rotate = 400; $mode = 1; $step = intval($target * $rotate / 5); $restore_step = $rotate - $step; // 元位置に戻すためのステップ数 $step = $step + $rotate * 2; // 演出のために2回転する $restore_step = $restore_step + $rotate * 2; // 回転 _rotate_step($step, $mode); // チカチカ send_data(PORT_ARD1, array(ord('A'))); send_data(PORT_ARD2, array(ord('A'))); /* ここから結果が出るまで6秒弱 */ sleep(8); // 大体8秒くらいで出る /* 結果が出たー */ // アルパカ $data = array(255, AGB_ID, 3, 30, 1, 40); send_data(PORT_AGB, $data); // チカチカ send_data(PORT_ARD1, array(ord('B'))); send_data(PORT_ARD2, array(ord('B'))); sleep(15); // アルパカSTOP _stop(); sleep(1); /* チカチカやめ */ send_data(PORT_ARD1, array(ord('S'))); send_data(PORT_ARD2, array(ord('S'))); /* 元の状態に戻す */ _rotate_step($restore_step, $mode); sleep(10); }
private function send_smtp($from, $to, $title, $text, $files) { $server = MAIL_SERVER; $port = MAIL_PORT; $user = MAIL_USER; $pass = MAIL_PASS; $type = strpos($text, '<') !== false ? 'html' : 'plain'; $socket = fsockopen($server, $port, $errno, $errstr, 30); if (defined('MAIL_DOMAIN')) { fputs($socket, "EHLO " . MAIL_DOMAIN . "\r\n"); } else { fputs($socket, "EHLO\r\n"); } if ($this->_responce($socket) != '220') { return $this->_stop($socket, __LINE__); } fputs($socket, "AUTH LOGIN\r\n"); if ($this->_responce($socket) != '250') { return $this->_stop($socket, __LINE__); } fputs($socket, base64_encode($user) . "\r\n"); if ($this->_responce($socket) != '334') { return $this->_stop($socket, __LINE__); } fputs($socket, base64_encode($pass) . "\r\n"); if ($this->_responce($socket) != '334') { return $this->_stop($socket, __LINE__); } if ($this->_responce($socket) != '235') { return $this->_stop($socket, __LINE__); } fputs($socket, "MAIL FROM:<{$from}>\r\n"); if ($this->_responce($socket) != '250') { return $this->_stop($socket, __LINE__); } fputs($socket, "RCPT TO:<{$to}>\r\n"); if ($this->_responce($socket) != '250') { return $this->_stop($socket, __LINE__); } fputs($socket, "DATA\r\n"); if ($this->_responce($socket) != '354') { return $this->_stop($socket, __LINE__); } fputs($socket, "To: {$to}\r\n"); fputs($socket, "From: {$from}\r\n"); fputs($socket, "Subject: {$title}\r\n"); if ($files) { $boundary = '---' . md5(microtime()) . '---'; //Разделитель fputs($socket, "Content-Type: multipart/mixed; boundary=\"{$boundary}\"\r\n"); fputs($socket, "Content-Transfer-Encoding: 8bit\r\n"); fputs($socket, "\r\n\r\n"); fputs($socket, "--{$boundary}\r\nContent-Type: text/{$type}; charset=utf-8\r\n\r\n" . $text . "\r\n--{$boundary}"); foreach ($files as $path => $name) { $data = file_get_contents($path); fputs($socket, "\r\nContent-Type: application/octet-stream; name==?utf-8?B?" . base64_encode($name) . "?=\r\n"); fputs($socket, "Content-Transfer-Encoding: base64\r\n"); fputs($socket, "Content-Disposition: attachment; filename==?utf-8?B?" . base64_encode($name) . "?=\r\n\r\n"); fputs($socket, chunk_split(base64_encode($data)) . "\r\n--" . $boundary); unset($data); } fputs($socket, "--\r\n.\r\n"); } else { fputs($socket, "Content-Type: text/{$type}; charset=UTF-8\r\n"); fputs($socket, "Content-Transfer-Encoding: 8bit\r\n"); fputs($socket, "\r\n\r\n"); fputs($socket, $text . " \r\n"); fputs($socket, ".\r\n"); } if ($this->_responce($socket) != '250') { return _stop($socket, __LINE__); } fputs($socket, "QUIT\r\n"); fclose($socket); return true; }