Thread: Accessory port
View Single Post
Old 07-29-2012, 10:37 AM   #1
mmatej
Connoisseur
mmatej is less competitive than you.mmatej is less competitive than you.mmatej is less competitive than you.mmatej is less competitive than you.mmatej is less competitive than you.mmatej is less competitive than you.mmatej is less competitive than you.mmatej is less competitive than you.mmatej is less competitive than you.mmatej is less competitive than you.mmatej is less competitive than you.
 
Posts: 91
Karma: 14730
Join Date: Jun 2012
Device: none
Accessory port

As the accessory port is being ignored as an output port here (I haven't found here it's used somewhere), I created script that sends text string to the port.
Spoiler:
acsend.sh:
Code:
#!/bin/sh
ac='/sys/devices/system/mx50_accessory/mx50_accessory0/mx50_accessory_state'
rate=10000
nullstop=$(expr 3 \* ${rate})

get_chcode()
{
echo $(printf '%d' "$'$1")
}
binconv()
{
padto=0
[ ${#2} -ne 0 ] && padto=${2}
bstr=''
d=0
num=${1}
while [ ${num} -ne 0 ]; do
d=$(expr ${d} + 1)
bit=$(expr ${num} % 2)
bstr="${bit}""${bstr}"
num=$(expr ${num} / 2)
done
while true; do
[ ${padto} -eq 0 ] && break
[ ${d} -ge ${padto} ] && break
padleft=$(expr ${padto} - ${d})
bnulls=''
for i in $(seq 1 ${padleft}); do
bnulls="${bnulls}"'0'
done
bstr="${bnulls}""${bstr}"
break
done
echo "${bstr}"
}

[ ${#1} -eq 0 ] && return 1
str=''
for i in $(seq 0 $(expr ${#1} - 1)); do
code=$(get_chcode "${1:${i}:1}")
[ ${i} -ne 0 ] && str="${str}"' '
str="${str}""$(binconv ${code} 8)"
done
str="${str}"' '
sto=$(expr ${#str} - 1)
chp=0
echo -n "${1:${chp}:1}"
for i in $(seq 0 ${sto}); do
state="${str:${i}:1}"
[ "${state}" == ' ' ] &&
{
echo 0 > ${ac}
usleep ${nullstop}
chp=$(expr ${chp} + 1)
[ ${i} -ne ${sto} ] && echo -n "${1:${chp}:1}"
continue
}
echo ${state} > ${ac}
usleep ${rate}
done
echo

Connect the LED to the port and try it with ./acsend.sh 'Hello World!'!
Timing is very unreliable because it's shell script, but it's not bad anyway.
mmatej is offline   Reply With Quote