google-sheet2Html

/*! * * Google Sheets To HTML v0.9a * * To use, simply replace the "tq?key=" value in the * URL below with your own unique Google document ID * * The Google document's sharing must be set to public * */ google.load('visualization', '1', { packages: ['table'] }); var visualization; function drawVisualization() { var query = new google.visualization.Query('https://spreadsheets.google.com/tq?key=https://docs.google.com/spreadsheets/d/1-vUEZ9tae5C_OXzSi0dQPWwUrO3H5S-gImB5afFgqDg/edit?usp=sharing'); query.setQuery('SELECT A, B, C, D label A "Duration", B "Song", C "Requested By", D "URL"'); query.send(handleQueryResponse); } function handleQueryResponse(response) { if (response.isError()) { alert('There was a problem with your query: ' + response.getMessage() + ' ' + response.getDetailedMessage()); return; } var data = response.getDataTable(); visualization = new google.visualization.Table(document.getElementById('table')); visualization.draw(data, { legend: 'bottom' }); } google.setOnLoadCallback(drawVisualization);

Wednesday, December 7, 2016

ใช้ python ควบคุมวิทยุสื่อสาร ตอน การ import โมดูล


ผู้ที่เริ่มหัดเขียนโปรแกรม อาจจะสับสนวิธีการ เรียกใช้โมดูลในภาษา python ทำให้ไปต่อไม่ถูก ตั้งแต่ บรรทัดแรก ลองอ่านบทความนี้ดู ครับ

วิธีการ import เรียกใช้ โมดูล ในที่นี้จะยกตัว โมดูล Tkinter

มี สองวิธี คือ

วิธีที่ 1

from Tkinter import *

จะสามารถ เรียกใช้ ฟังชั่นในโมดูลได้ เลย ดังในตัวอย่างที่ ผ่านมา
window = Tk()

ลองดูรายละเอียด 

from Tkinter import *

window = Tk()
window.title("HS1ZFK")
btnTxRx = Button(window, text="Tx/Rx", bg="light blue")
btnTxRx.grid(padx=80, pady=20)
window.mainloop()

วิธีที่

ในกรณีที่ต้องใช้ โมดูล หลายๆ อันในโปรแกรมเดียวกัน อาจจะเกิดปัญหาจาก ฟังชั่นในโมดูล มีชื่อ ซ้ำกัน เพื่อแก้ปัญหาดังกล่าว จะทำการ import ด้วยวิธีนี้
Import Tkinter
เมื่อจะเรียกใช้ ฟังชั่นในโมดูล ต้อง เรียกโมดูลก่อน ตามด้วยเครื่องหมาย จุด ตามด้วยชื่อฟังชั่น
window = Tkinter.Tk()

สังเกตุ โค้ดของวิธีที่ 2

import Tkinter


window = Tkinter.Tk()
window.title("HS1ZFK")
btnTxRx = Tkinter.Button(window, text="Tx/Rx", bg="light blue")
btnTxRx.grid(padx=80, pady=20)
window.mainloop()

ซึ่งทั้งสองวิธีจะได้ ผลเหมือนกันดังในภาพ
 
 


Friday, December 2, 2016

ใช้ Python ควบคุมวิทยุสื่อสาร ตอน Tkinter GUI




   การนำ คอมพิวเตอร์ มาพ่วงต่อกับ วิทยุสือสาร ผ่าน usb-serial มีวิธีประยุกต์ใช้ได้

หลายวิธี เช่น ให้ เปิิด ไฟล์ mp3 เสียง เรียก CQ ในการแข่งขัน , การ อ่านประกาศ ของ สมาคม / ชมรม ผ่านทาง อินเตอร์ เน็ท คือ ให้ Net_Control อยู่ที่บ้าน สามารถ ควบคุม วิทยุสื่อสาร ที่อยู่ สมาคม / ชมรม ได้ , การส่งข้อมูล ที่ เข้า รหัส (codec) ลองอ่านดูบทความเก่า ครับ
 

การใช้ python script ผ่านทาง command line ไม่ยาก แต่ จะถ้าจะ

แจก จ่ายให้ เพื่อน นักวิทยุสมัครเล่น เลือก ใช้ กราฟฟิก อินเตอร์ เฟส 

 GUI ง่ายสำหรับ เพื่อนๆ มากกว่า บทความนี้ จะใช้ Tkinter ในการสร้าง 

แทน Wxpython ในบทความเก่าที่ผ่านมา



สำหรับผู้ที่ใช้ windows เมื่อทำการ ติดตั้ง python ปรกติ จะติดตั้ง Tkinter ให้อยู่แล้ว แต่ ถ้าใช้ระบบ Linuxเริ่มติดตั้งด้วย

sudo apt-get update
sudo apt-get install python-tk


ในการเรียกใช้ Gui python tkinter ก่อนอื่นต้องตรวจสอบว่าเป็น python เวอร์ชั่นไหน เพราะ คำสั่ง

import ต่างกัน โดยเวอร์ชั่นของ python ให้สังเกตุจาก ข้อมูลหลังเรียกใช้ ดังตัวอย่างเป็น เวอร์ชั่น 2.7.12
ใน python 2 จะเรียก ใช้ด้วยคำสั่ง

from Tkinter import *
สังเกตุ อักษร T เป็นตัวพิมพ์ ใหญ่

และใน python 3 จะเรียกใช้ด้วยคำสั่ง

from tkinter import *
โดยจะใช้ัอักษร t ตัวเล็ก

ในที่นี้จะเขียน สคริป เพื่อ เรียก ปุ่มกด จากนั้น จะ ค่อยๆ เพิ่ม การควบคุม usb – serial เพื่อพวงต่อกับวิทยุ
และ การเรียกใช้ ไฟล์ mp3 การตั้งเวลา เป็น ลำดับ

ลองดู สคริป นี้ 
from Tkinter import *



window = Tk()

window.title("HS1ZFK")

btnTxRx = Button(window, text="Tx/Rx", bg="light blue")

btnTxRx.grid(padx=80, pady=20)

window.mainloop()


ลองดูรายละเอียด

from Tkinter import *
เริ่มแรก ทำการ import โมดูล tkinter เครื่องหมาย * คือ เรียกทุกอย่างใน โมดูล

window = Tk()
จากนั้นทำการสร้าง instance ของ Tk class โดยตั้งชื่อว่า window

window.title("HS1ZFK")
กำหนด title ของ window

btnTxRx = Button(window, text="Tx/Rx", bg="light blue")
สร้างปุ่มกด ชื่อ btnTxRx และใช้สี light blue หากต้องการเปลี่ยนสีให้ดูรายละเอียดที่


btnTxRx.grid(padx=80, pady=20)
สังเกตุ grid method จะทำการควบคุม ตำแหน่งของ widget ด้วย จำนวนช่องวาง pixel ตำแหน่ง x และ y

window.mainloop()
เป็นคำสั่งให้ วน loop จนกว่า จะ คลิกที่ เครื่องหมาย x เพื่อเป็นการหยุดการทำงาน

เมื่อเขียน script แล้วทำการบันทึกในตัวอย่างใช้ชื่อ firstTk.py สำหรับ Linux ให้ทำการ เปลี่ยนค่า permission ด้วยคำสั่ง
$ sudo chmod +x firstTk.py

จากนัน ให้โปรแกรมทำงานด้วยคำสั่ง
$ python ./firstTk.py
จะได้ หน้าต่าง ดังในภาพ




Thursday, November 24, 2016

Independent side band


Independent side band (ISB)


วิทยุ AM มีการใช้เทคนิค Single side band Mode ซึ่งแบ่งออก เป็น สัญญาณ คลื่น ครึ่งบน เรียก upper sideband (USB) และ สัญญาณ ครึ่่งล่างเรียก Lower Side band (LSB)

ในขณะเดียวกัน ถ้าให้ ผสม สัญญาณ ครึ่งบน ดัวยข้อมูล A และ ครึ่งล่าง ด้วยข้อมูลB จากนันผสมสัญญาณ และส่งออกอากาศ พร้อมกัน ทั้งครึ่งบนและครึ่งล่าง

เป็นการส่งสัญญาณ สเตริโอ (stereo) จะเรียกการส่งสัญญาณ แบบนี้ว่า Independent side band เรียกย่อว่า ระบบISB (independent แปลว่า อิสระ

ในบางแห่งอาจจะเรียกการส่งสัญญาณแบบนี้ว่า Kahm system ซึ่งพัฒนาโดยวิศวกรไฟฟ้า ชื่อ Leonard R. Kahn จนได้เป็นระบบ โมโตโลร่า ซีแคม (Motolola C-Quam AM Stereo) แล้วต่อมาได้พัฒนาเป็น ระบบ CAM-D AM digital อ่านเพิ่มเติม CAM-D AM digital   ที่

มีการใช้การส่งสัญญาณ ISB กับการสื่อสารระยะไกล แบบ point - to – point ในย่านความถี่วิทยุ HF นอกจาน นี้ยังมีการใช้ในทางการทหารด้วย


 

Tuesday, November 15, 2016

Config OpenCv สำหรับ eclipse

เกิดอาการเบื่อการ QSO เลย ลองมาศึกษา วิธีใช้งาน openCv ผู้เขียนใช้ OS Linux ในที่นี้จะทำการการตั้งค่าเพื่อเริ่มเขียนโปรแกรม ด้วย eclipse  (การติดตั้ง eclipse และ OpenCv ในระบบ Windows, Mac, Linux จะแตกต่างกัน ให้ดูรายละเอียดการติดตั้ง ในเวปไซด์ ของ eclipse ที่ https://eclipse.org/downloads/ และ OpenCv ที่http://docs.opencv.org/3.1.0/df/d65/tutorial_table_of_content_introduction.html  )


วิธี config Opencv สำหรับ eclipse

 บทความจากเวป ไซด์ http://docs.opencv.org/2.4/doc/tutorials/introduction/linux_eclipse/linux_eclipse.html

 

1 เปิด โปรเจคใหม่ เลือก File --> New --> C/C++ Project
2 ตั้งค่าชื่อโปรเจค ในช่อง Project name: ในตัวอย่าง คือ DisplayImage
3 ช่อง Project Type เลือก Empty Project
Toolchains เลือก Linux GCC
4แล้วค่าที่เหลือ ให้ปล่อยเป็น ดีฟอลไว้ จากนั้นกด Finish
5 ในช่อง Project Explorer เลือก ชื่อโปรเจคในตัวอย่างคือ DisplayImage คลิกขวา
6 สร้างโฟลเดอร์ใหม่ เลือก Folder ใส่ชื่อ src กด Finish
คลิกขวาที่ โฟลเดอร์ src กดเลือก New source file
ใส่ชื่อไฟล์ DisplayImage.cpp กด Finish
7 พิมพ์ โค้ดตามตัวอย่าง มีข้อสังเกตุ ที่ คำสัง

#include <highgui.h> เครื่องหมาย < และ  > เป็นการระบบุตำแหน่งของ ไฟล์
highgui.h อยู่ที่ตำแหน่ง library ของระบบ OS แต่ถ้าใช้คำสั่ง

#include "highgui.h" เครื่องหมาย " และ  " เป็นการระบบุตำแหน่งของ ไฟล์

highgui.h อยู่ที่ โฟลเดอร์ เดียวกันกับ โปรแกรม


#include <cv.h>
#include <highgui.h>

using namespace cv;

int main( int argc, char** argv )
{
  Mat image;
  image = imread( argv[1], 1 );

  if( argc != 2 || !image.data )
    {
      printf( "No image data \n" );
      return -1;
    }

  namedWindow( "Display Image", CV_WINDOW_AUTOSIZE );
  imshow( "Display Image", image );

  waitKey(0);

  return 0;
} 
 



8 เตรียมการเพือ กำหนด คอมพายเลอร์ และ ลิงค์


ตั้งค่า คอมพายเลอร์ Compiler
ในเทอร์มินอล ตรวจหาว่า ไฟล์ Include อยู่ที่ไหนโดยพิมพ์
$ pkg-config  - - cflags opencv
สังเกตุ หน้า cflags มีเครื่องหมาย - จำนวน 2 อัน




จากในภาพพบว่าอยู่ที่ usr/include/opencv เมื่อได้ค่าเรียบร้อยแล้ว ให้ทำการกำหนดค่า ไปที่


Project → Properties
ช่องด้านซ้าย เลือก c/c++ Build เลือก Setting ทางด้านขวาจะมีแทปให้เลือกหลายอัน เลือก Tool Setting
เลือกGCC C++ Compiler คลิก Include
จากนั้นในช่องซ้ายสุด Include paths(-l) ใส่ค่าตำแหน่งของ include ที่ได้ ในที่นี้คือ /usr/include/opencv


ตั้งค่า ลิงค Linker
ทำการหา library path ในเทอร์มินอลพิมพ์ คำสั่ง
$ pkg-config  - - libs opencv



จากในดัวอย่างพบว่าอยู่ที่ /usr/lib และมี libraries อยู่หลายตัว โดยมากจะใช้ libraries 3ตัวนี้ 
opencv_core
opencv_imgproc
opencv_highgui 
ทั้งนี้ต้องดูด้วยว่า ใน โปรแกรมที่เขียนเรียกใช้   libraries ใด ก็ให้เพิ่มเข้าไป เช่น ถ้าใช้เกียวกับ การรับภาพ วีดีโอ จาก กล้อง ก็ต้องใช้ opencv_videoio เป็นต้น

 
การตั้งค่าลิงค์เกอร์ ทำสองตำแหน่ง คือ
ลำดับที่หนี่ง libraries อยู่ที่ไหน ตั้งค้าที่ Library search Path(-L)
ลำดับที่สอง libraries มีชือว่าอะไรที่ต้องการใช้บ้าง ตั้งค้าที่ libraries

ทำดังนี้ Project → Properties
ช่องด้านซ้าย เลือก c/c++ Build เลือก Setting ทางด้านขวาจะมีแทปให้เลือกหลายอัน เลือก Tool Setting
เลือก GCC C++ Linker เลือก Libraries

ด้านซ้ายมือ Library search Path(-L) ใส่ค่า /usr/lib

ช่อง Libraries(-l) ให้ใส่ชือ libraries ที่ต้องการใช้งาน ในตัวอย่างใส่ทั้งหมดเลย แล้วกด OK


ทำการคอมพาย์ กด Project -->Build all
จะได้ ไฟล์ ที่พร้อมทำงาน อยู่ในโฟลเดอร์ workspace ให้ดูค่า เพอร์มิชชั่น สั่งงาน ด้วยเทอร์มินอล

 
 จะแสดงภาพชื่อ logo.png



Saturday, July 23, 2016

อัดเสียง QSO ด้วยโปรแกรม Audacity

  โปรแกรม Audacity เพื่อทำการเฝ้าฟัง


เพื่อแก้ปัญหาการเฝ้าฟัง ช่วงนอกเวลาทำการ ของศูนย์ควบคุมข่ายวิทยุสมัครเล่น ซึ่งไม่มีเจ้าหน้าที่ทำการอยู่ สามารถใช้ความสามารถของโปรแกรม Audacity ทำงานแทนได้ โดยที่ Audacity เป็นโปรแกรมฟรี ดาวโหลด ได้ที่ http://www.audacityteam.org/download/

 หลังจากทำการติดตั้งโปรแกรมแล้ว ให้ทำการ ต่อ ไมโครโฟน จากคอมพิวเตอร์ และเปิด วิทยุสื่อสารไว้ ต่อไปให้ทำการ ตั้งค่าดังนี้

1 ไปที่ เมนู Transport เลือก Sound Activated Recording (on/off)



2 ตั้งค่า ไมค์ เป็น โมโน เพราะเสียงวิทยุสือสาร เป็น โมโน


 
3 ทำการหาค่า ความดังของเสียง (Threshold) ว่าต้องการให้เริ่มบันทึก ที่ระดับเสียงเท่าใด โดยเปิด วิทยุสื่อสาร จากนั้นกดปุ่ม Start Monitoring ที่ ไอคอน เครื่องหมาย ไมค์โคโฟน เมื่อทราบค่าที่ต้องการแล้ว คลิกเมนู Transport เลือก Sound Activation Level


 
4 กดปุ่ม บันทึก

5 เมื่อต้องการ หยุดให้ กดปุ่ม หยุด หากต้องการ บันทึกเก็บไว้ เป็น ไฟล์ mp3 ให้เลือกเมนู File – Export audio จากนั้น เลือก mp3
  
 วีดีโอ ประกอบ

Saturday, June 18, 2016

ตัวช่วยทดสอบ Digital voice


คำสั่ง sleep ช่วยทดสอบ Digital voice


(นักวิทยุสมัครเล่นขั้นต้น ไม่อนุญาติให้ทำการทดสอบ นะครับ ผู้เขียนแค่ศึกษา ไม่ได้ทดสอบออกอากาศ เลย  จริง จริงงงงงง)

ในการศึกษา การเข้ารหัสและถอดรหัสสัญญาณ ผู้เขียน ได้ QSO ตามความถี่ช่องต่างๆ ที่สัญญาณ พอไปถึง เพื่อหาคนช่วยศึกษา หา คู่สถานนี ที่ รู้เรื่อง Linux พอจะฟังวิธีศึกษา จากผู้เขียนเข้าใจไม่ได้ สุดท้ายเลย ต้องทำคนเดียว เป็นปัญหาอย่างมาก ที่ต้องกด คีย์ออกอากาศ ที่ เครื่องหนี่ง และ ไป ฟังอีกเครื่องหนึ่ง

เพื่อแก้ปัญหานี้ ก็เลย ให้ คอมพวิเตอร์ กด ออกอากาศให้
ใน โพสทนี้ จะใช้ คำสั่ง ตั้งเวลา เหมือนการวางระเบิดเวลา ด้วย คำสั่ง sleep ใช้คำสั่งนี้ ก็มีเวลามากพอไปเตรียม ถอดรหัสสัญญาณ ได้

รู้จักคำสั่ง sleep
sleep เป็นคำสั่งใน bash ใช้เพื่อหยุดการทำงานชั่วคราว มีรูปแบบการใช้งานดังนี้
$ sleep ตัวเลขกำหนดเวลา [Suffix]
Suffix มีความหมายดังนี้

s คือ วินาที (เป็นค่าดีฟอล์ท จะพิมพ์อักษร s หรือไม่ก็ได้)
m คือ นาที
h คือ ชั่วโมง
d คือ วัน
ลองใช้คำสั่งดู
$ sleep 3 (หรือ $ sleep 3s) เป็นคำสั่งให้หยุด 3 วินาที
$ sleep 1m เป็นคำสั่งให้หยุด 1 นาที (สังเกตุ หมายเลขหนึ่งและอักษร mพิมพ์ติดกัน)

ใน bash หากต้องการให้คำสั่งที่ 1 ทำงานสำเร็จ แล้ว ทำงานในคำสั่งที่ 2 ทำงานต่อเนื่อง ทำได้โดยใช้เครื่องหมาย && (หากคำสั่งที่ 1 ทำงานไม่สำเร็จ จะไม่ทำงานคำสั่งที่ 2) ลองทำสอบการใช้งานให้พิมพ์คำสั่ง

$ sleep 2 && echo “Done”

คอมพิวเตอร์จะหยุด 2 วินาที จากนั้นจะพิมพ์ คำว่า Done ออกทางจอภาพ


จากบทความฉบับที่แล้ว เราได้ติดตั้ง ไมโครโฟน ทั้งได้ปรับแต่งตั้งค่าไมโครโฟนด้วย alsamixer จากนั้นได้รู้จักโปรแกรมsox แล้ว
ให้ทดสอบการบันทึกเสียง
คำสั่งคือ rec ตามด้วยชื่อ ไฟล์ ตัวอย่าง เช่น

$ rec rectest.wav

เราจะได้ ไฟล์ชื่อ rectest.wav ที่ไดเรคทอรี่ ที่เรียกใช้งานปัจจุบัน จากนั้นลองเล่นเสียงด้วยคำสั่ง play

$ play rectest.wav

จะได้ยินเสียงที่ทำการบันทึกไว้

ต่อไปเราจะทำให้โปรแกรม sox สามารถรองรับ ไฟล์ mp3 ได้ ต้องติดตั้ง ไลเบอรี libsox-fmt-mp3 เพิ่มเติมด้วยคำสั่ง
$ sudo apt-get install libsox-fmt-mp3

ผู้เขียนได้ทำการ สร้างไฟล์เข้ารหัสเสียง ชื่อ codecAudio.mp3 มาไว้ในโฟลเดอร์ ที่ใช้งานปัจจุบัน เพื่อทำการทดสอบ
ต่อไปลองตั้งเวลาในตัวอย่าง ตั้งเวลา 1 นาที แล้วทำการเล่นเพลง codecAudio.mp3 ด้วยคำสั่งดังนี้

$ sleep 1m && play codecAudio.mp3

แล้วไปยัง เครื่องรับ เพื่อรับเสียง มาทำการทดสอบ ต่อไป
เออ คนเดียว ก็ทำได้วะ แต่ขาดเพื่อน ปรึกษา เวลา ติดปัญหา เนอะ




Thursday, June 16, 2016

Text to speech คนใบ้เล่นวิทยุสื่อสารได้


เป็น ใบ้ ก็ เล่นวิทยุสมัครเล่นได้ 

 
      แรกเริ่ม ผมสร้างโปรแกรมนี้ให้ สถานนีควบคุมข่าย 144800 สมุทรปราการ ไว้เป็นการควบคุมวิทยุสื่อสารระยะไกล เพื่ออ่าน ไฟล์ ข้อความประกาศของสมาคม เคยเอาไปให้ดูสมาคมดู ในวันที่จัดสอบ นักวิทยุสมัครเล่น ที่่ ห้างอิมพีเรียลสำโรง

     เมื่อเปิดคลิปให้ดูได้รับคำตอบว่า "วิทยุสื่อสารควบคุมระยะไกล ให้คอมพิวเตอร์มันพูดเองได้ แปลกตรงไหน คราวแรกตั้งใจจะบอกว่า ต่อยอดไป ใช้เข้า hopping code, ไว้หา QRM, ไว้แข่งขัน ในงาน คอนเทส  และ อืี่นๆ ด้วยความเซ็งในอารมณ์ สุดท้ายเก็บไว้เล่นเอง ทดสอบออกอากาศ กับ HS1KQL, E22FNQ, E22MGD และ อีกครั้งกับ เพื่อนสมาชิก กลุ่ม HS1AP , HS1ZHY

โปรแกรม ชื่อ PyMesV14 เขียนด้วยภาษา pythonโดยใช้ เสียงสังเคราะห์ ให้คอมพิวเตอร์ อ่านข้อความแล้วออกอากาศ  มีความสามารถดังนี้

1 load ไฟล์ข้อความได้ ที่ใช้ประจำได้
2 พิมพ์ ข้อความเพิ่มเติม ได้
3 ลบ ข้อความ ได้

ในวีดีโอคลิป เริ่มจาก เพี่มข้อความใหม่ลงไป แล้วกดปุ่ม tts Tx ย่อจาก text to speech ส่วน Tx คือส่งออกอากาศ
จากนั้นลองกดคำที่ตั้งไว้ล่วงหน้า ให้อ่านออกอากาศ

Tuesday, June 14, 2016

ตั้งเวลาอัดเสียง QSO ด้วย crontab


การใช้งาน crontabเพื่อตั้งเวลาให้บันทึกเสียง QSO ของ ศูนย์ ควบคุมข่าย


บทความก่อน ได้เสนอ สคริป อัดเสียง QSO ที่จะอัดเฉพาะ เวลามีเสียง โดยไม่อัด คีย์เปล่าที่ออกอากาศ ไปแล้ว คราวนี้ จะแนะนำคำสัง ให้ สคริป ทำงาน ตามเวลาทำกำหนด เป็นการตั้งครั้งเดียว ให้ทำงานเป็นวงรอบ จนกว่าจะสั่งให้เปลี่ยนแปลง
 
crontab เป็นคำสั่งที่จะทำงาน ตามเวลาที่ได้กำหนดไว้ในตารางเวลา หรือที่เรียกว่า cron table
งานที่สั่งให้คอมพิวเตอร์ ทำ เรียกว่า cron job

รูปแบบของ cron job
min hour dayOfMonth Month dayOfWeek cmd

min Minute 0-59
hour Hour 0-23
dom DayOfMonth 1-31
mon Month 1-12

ด้วยเหตุผลทางด้านความปลอดภัย ยูสเซอร์แต่ละคนจึงมี cron ส่วนตัว 
ที่ตำแหน่ง /var/spool/cron/crontabs/user
เรียกด้วย ยูเซอร์เนมส์ ในตัวอย่าง user คือ hs1zfk

$ crontab -u hs1zfk crontab.new

คำสั่งให้แสดง cron table ให้พิมพ์คำสั่ง
$ crontab -l

แสดง cron table โดยระบุ user ให้พิมพ์คำสั่ง
$ crontab -u username -l

คำสั่งเพื่อแก้ไข cron table ให้พิมพ์คำสั่ง
$ crontab -e

การกำหนดเวลาทำงานของโปรแกรมให้ ทำการสร้าง ไฟล์ ในตัวอย่างชื่อ mycronjobs.txt

เครื่องหมาย * หมายถึง ทำทุกๆนาที, ทุกชั่วโมง....
เครื่องหมาย , หมายถึง ทำงานเป็นช่วง
เครื่องหมาย – หมายถึง ทำงาน กำหนดเวลาเป็นช่วง
ตัวอย่างเช่น
$ cat /home/hs1zfk/mycronjobs.txt

01 00 * * * /bin/sh /home/root/bin/QSO_rec.sh

จากนั้น upload ไปยัง cron table ด้วยคำสั่ง
$ crontab /home/hs1zfk/mycronjobs.txt


คอมพิวเตอร์ก็จะทำงานตามวงรอบที่กำหนดไว้ใน cron table เมื่อต้องการลบcron table ให้ใช้คำสั่ง
$ crontab -r

การใช้งาน มีรูปแบบ สั่ง ทำงาน ,สั่งหยุด ,สั่งrestart ดังนี้

$ sudo /etc/init.d/cron start

$ sudo /etc/init.d/cron stop

$ sudo/etc/init.d/cron restart

ขอบคุณ ภาพจาก เวป http://tecadmin.net/crontab-in-linux-with-20-examples-of-cron-schedule/

Saturday, June 11, 2016

แปลงไฟล์ เสียงให้เป็น GSM





เปลี่ยน ไฟล์ wav ให้เป็น gsm ด้วย sox (Sound eXchange)

แจ้งไว้ตรงนี้ก่อนสำหรับผู้ที่ใช้ windows ถ้าอยากจะแปลงไฟล์เสียงเป็น ไฟล์ GSM ให้ใช้โปรแกรม Audacity


ทำการดาโหลด ได้ที่ http://www.audacityteam.org/download/



SoX ได้ชื่อว่า เป็น Swiss Army knife of audio สามารถทำงานเกี่ยวกับ เสียง ทั้งบันทึก เสียง เล่นไฟล์ เสียง แปลงไฟล์ เสียง ได้หลากหลาย อ่านรายละเอียดได้ที่ http://sox.sourceforge.net/soxformat.html

ไฟล์ เสียง GSM ย่อมาจาก Global System for Mobile Communications นิยมใช้ในการส่งข้อมูลเสียงในระบบ โทรศัพท์ เคลื่อนที่ปรกติ digital GSM จะมี sample rate ที่ 8000 hz (8 kHz)

ในบทความนี้ จะแปลงเสียง  จาก ไมโครโฟน ไปเป็น ไฟล์ เสียง GSM

ขั้นตอน ติดตั้ง SoX ด้วยเหตุที่ เราต้องการ แปลงเสียงเป็น gsm ทำให้ ต้องทำการติดตั้ง libraries libsox-fmt-all เพิ่มเพื่อทำการแปลงไฟล์ gsm ทำการติดตั้งด้วย

$ sudo apt-get install sox libsox-fmt-all
กดตอบ Y เพื่อเริ่มติดตั้ง




ลองทดสอบการ บันทึกเสียงด้วยคำสั่ง rec
 
$ rec -r 8000 -c 1 record_voice.gsm

-r 8000 คือค่า sample rate ที่ 8000 hz (8 kHz)
- c 1 คือ บันทึกเสียง แบบ mono
จะได้ไฟล์เสียง ชื่อ record_voice.gsm


เล่น ไฟล์เสียง gsm ด้วย คำสั่ง play