[BRLTTY] Appending NUL to cat

james collins james.collins75 at gmail.com
Mon Sep 28 21:05:53 EDT 2009


Took out -n and it worked! Thanks!

Sent from my iPhone

On Sep 28, 2009, at 7:40 PM, Michael Whapples <mwhapples at aim.com> wrote:

> OK, there must be something quite different about the Mac shell, it
> doesn't seem to be recognising -n in the echo command (I am a bit
> puzzled as I thought that was fairly standard and seems to be  
> supported
> by the shells I tried on my linux system). Anyway I think same advice,
> try removing the -n option (possibly should have paid more attention  
> to
> your first post where you said someone had told you to use echo  
> "\00" to
> get the null).
>
> Michael Whapples
> On 29/09/09 00:15, james collins wrote:
>> Now my synthesizer, says the line but adds a "n"?
>>
>> Sent from my iPhone
>>
>> On Sep 28, 2009, at 6:49 PM, Michael Whapples<mwhapples at aim.com>   
>> wrote:
>>
>>
>>> Could the extra characters/text you hear be "e n"? If so it seems  
>>> your
>>> copy of echo is not recognising the -e option, but if speech is  
>>> coming
>>> out then it must be inserting the NULL. Try editing your script to
>>> remove the -e option from the echo command, does it help? Having a
>>> look
>>> at various shells on my system it seems some versions of echo will  
>>> do
>>> the escape sequences needed to get the NULL character even without
>>> giving the -e option.
>>>
>>> Michael Whapples
>>> On 28/09/09 22:49, james collins wrote:
>>>
>>>> The script worked, but my synthesizer says something in the
>>>> beginning?
>>>> Like it adds, it sounds like "bn" or "vn" to what I write?
>>>>
>>>> Sent from my iPhone
>>>>
>>>> On Sep 28, 2009, at 5:08 PM, Michael Whapples<mwhapples at aim.com>
>>>> wrote:
>>>>
>>>>
>>>>
>>>>> The first line should start while and end with do
>>>>> second line has an echo command
>>>>> Third line should just be done
>>>>>
>>>>> Hope that makes it clearer as to the lines.
>>>>>
>>>>> As for shells, you probably have bash, so you could replace sh  
>>>>> with
>>>>> bash
>>>>> when launching the script or in the #!/bin/sh (so line reads #!/ 
>>>>> bin/
>>>>> bash
>>>>> ). I am using bash here.
>>>>>
>>>>> Michael Whapples
>>>>> On 28/09/09 21:42, james collins wrote:
>>>>>
>>>>>
>>>>>> On my phone which is where I am reading this email the lines you
>>>>>> gave
>>>>>> gotten broken up into four lines? Just wondering how to enter  
>>>>>> those
>>>>>> lines:
>>>>>>
>>>>>> while starts the 1st line and it ends w/;
>>>>>> do starts the second line
>>>>>> and done is on the third line?
>>>>>>
>>>>>> Is that right? Also I looked at the man page for echo under  
>>>>>> bash on
>>>>>> my
>>>>>> computer, there is a -n option but no -e option, I wondered if  
>>>>>> that
>>>>>> would make a difference? I guess I am using sh though?
>>>>>>
>>>>>> Sent from my iPhone
>>>>>>
>>>>>> On Sep 28, 2009, at 3:26 PM, Michael Whapples<mwhapples at aim.com>
>>>>>> wrote:
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>> You are correct that you would put at the beginning of the  
>>>>>>> script
>>>>>>> the line:
>>>>>>> #!/bin/sh
>>>>>>>
>>>>>>> Also how you said to start it is correct (in fact for running it
>>>>>>> in
>>>>>>> the
>>>>>>> way you describe that #!/bin/sh line wouldn't be needed).
>>>>>>>
>>>>>>> An alternative would be to set the script to be executable, a
>>>>>>> command like:
>>>>>>> chmod a+x your_file_name
>>>>>>>
>>>>>>> will set the file you name in the place of your_file_name to be
>>>>>>> executable by all users. Then you can run it by simply giving  
>>>>>>> the
>>>>>>> file
>>>>>>> name on the command line. However for this to work you MUST
>>>>>>> remember
>>>>>>> to
>>>>>>> include that #!/bin/sh line otherwise the system won't know what
>>>>>>> to
>>>>>>> run
>>>>>>> the script with. Also if you use this you can put the script  
>>>>>>> in a
>>>>>>> directory pointed at by $PATH and you can run it using just the
>>>>>>> script's
>>>>>>> name (eg. if you called the script file "speak_lines" and placed
>>>>>>> it
>>>>>>> in a
>>>>>>> directory in $PATH (on my linux system /usr/local/bin would be a
>>>>>>> good
>>>>>>> choice) then it could be run just giving the speak_lines  
>>>>>>> command).
>>>>>>>
>>>>>>> Now for how this script behaves:
>>>>>>> Precisely how you described you wanted things to work. Launch  
>>>>>>> the
>>>>>>> script
>>>>>>> and the cursor is placed on a new line waiting for you to enter
>>>>>>> text.
>>>>>>> Enter text and press enter, it will append a NULL character to  
>>>>>>> the
>>>>>>> text
>>>>>>> and send it to /dev/cu.usbserial-FTKVMAFF and hopefully the  
>>>>>>> synth
>>>>>>> will
>>>>>>> talk. The cursor will have dropped down a line and be waiting  
>>>>>>> for
>>>>>>> more
>>>>>>> text, keep entering lines of text until you get bored with it,  
>>>>>>> at
>>>>>>> which
>>>>>>> point press ctrl+d on a blank line (ends file, tells the  
>>>>>>> script no
>>>>>>> more
>>>>>>> text to read) or ctrl+c (not so preferred as this kills it)  
>>>>>>> and in
>>>>>>> either case you will find yourself back at the shell prompt.
>>>>>>>
>>>>>>> Michael Whapples
>>>>>>> On 28/09/09 20:09, james collins wrote:
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>> Thanks for the responses. To make a script out of the lines you
>>>>>>>> gave
>>>>>>>> me, would I write in a text editor, first line:
>>>>>>>> #!/bin/sh
>>>>>>>> How would I invoke this script, like let's say I made a script,
>>>>>>>> and
>>>>>>>> called it samplescript.txt, if I was in the directory where it
>>>>>>>> was
>>>>>>>> located I would say:
>>>>>>>> sh ./samplescript.txt
>>>>>>>> what would happen next? In the script cat never gets called?
>>>>>>>> Would my
>>>>>>>> cursor drop down a line and I would enter text? And when I hit
>>>>>>>> return
>>>>>>>> a NUL character would be appended to the end of the text? And
>>>>>>>> then if
>>>>>>>> I hit cntrl-c it would exit cat?
>>>>>>>>
>>>>>>>> Sent from my iPhone
>>>>>>>>
>>>>>>>> On Sep 28, 2009, at 1:46 PM, Michael  
>>>>>>>> Whapples<mwhapples at aim.com>
>>>>>>>> wrote:
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>> You can do what you are asking for in three lines:
>>>>>>>>>
>>>>>>>>> while read myline ; do
>>>>>>>>> echo -e -n "$myline\00">/dev/cu.usbserial-FTKVMAFF
>>>>>>>>> done
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>> On my phone it is written as four lines?
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>> For convenience you may want to put those three lines in a  
>>>>>>>>> text
>>>>>>>>> file
>>>>>>>>> to
>>>>>>>>> make a script.
>>>>>>>>>
>>>>>>>>> Michael Whapples
>>>>>>>>> On 28/09/09 18:06, Dave Mielke wrote:
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>> [quoted lines by james collins on 2009/09/28 at 12:29 -0400]
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>> Just wondering what I am doing wrong? I want to use cat,  
>>>>>>>>>>> but I
>>>>>>>>>>> want to
>>>>>>>>>>> append a NUL character to what I type? I tried typing:
>>>>>>>>>>> echo -e -n '\000' | cat>      /dev/cu.usbserial -FTKVMAFF
>>>>>>>>>>> What I was hoping would happen, is my cursor would drop  
>>>>>>>>>>> down a
>>>>>>>>>>> line
>>>>>>>>>>> and I would be in the cat command, I would then right some
>>>>>>>>>>> text
>>>>>>>>>>> and
>>>>>>>>>>> when I hit return, a NUL character would be appended to the
>>>>>>>>>>> text I
>>>>>>>>>>> had
>>>>>>>>>>> written and my synthesizer would speak the words I had
>>>>>>>>>>> written?
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>> I think you mustn't be very familiar with Unix-style  
>>>>>>>>>> operating
>>>>>>>>>> systems.
>>>>>>>>>>
>>>>>>>>>> When you join two commands with |, what you're doing is
>>>>>>>>>> redirecting
>>>>>>>>>> the input
>>>>>>>>>> of the second command (in your case, cat) away from your
>>>>>>>>>> keyboard
>>>>>>>>>> and to the
>>>>>>>>>> output of the first command (in your case, echo).
>>>>>>>>>>
>>>>>>>>>> There's no magic way to do what you're wanting to do. If you
>>>>>>>>>> want a
>>>>>>>>>> NUL
>>>>>>>>>> appended to each line you type before that line is written to
>>>>>>>>>> your
>>>>>>>>>> synthesizer
>>>>>>>>>> then you're going to have to write a simple program to do
>>>>>>>>>> exactly
>>>>>>>>>> that. In this
>>>>>>>>>> case, a fairly simple shell script should suffice.
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>> _______________________________________________
>>>>>>>>> This message was sent via the BRLTTY mailing list.
>>>>>>>>> To post a message, send an e-mail to: BRLTTY at mielke.cc
>>>>>>>>> For general information, go to: http://mielke.cc/mailman/listinfo/brltty
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>> _______________________________________________
>>>>>>>> This message was sent via the BRLTTY mailing list.
>>>>>>>> To post a message, send an e-mail to: BRLTTY at mielke.cc
>>>>>>>> For general information, go to: http://mielke.cc/mailman/listinfo/brltty
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>> _______________________________________________
>>>>>>> This message was sent via the BRLTTY mailing list.
>>>>>>> To post a message, send an e-mail to: BRLTTY at mielke.cc
>>>>>>> For general information, go to: http://mielke.cc/mailman/listinfo/brltty
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>> _______________________________________________
>>>>>> This message was sent via the BRLTTY mailing list.
>>>>>> To post a message, send an e-mail to: BRLTTY at mielke.cc
>>>>>> For general information, go to: http://mielke.cc/mailman/listinfo/brltty
>>>>>>
>>>>>>
>>>>>>
>>>>> _______________________________________________
>>>>> This message was sent via the BRLTTY mailing list.
>>>>> To post a message, send an e-mail to: BRLTTY at mielke.cc
>>>>> For general information, go to: http://mielke.cc/mailman/listinfo/brltty
>>>>>
>>>>>
>>>> _______________________________________________
>>>> This message was sent via the BRLTTY mailing list.
>>>> To post a message, send an e-mail to: BRLTTY at mielke.cc
>>>> For general information, go to: http://mielke.cc/mailman/listinfo/brltty
>>>>
>>>>
>>> _______________________________________________
>>> This message was sent via the BRLTTY mailing list.
>>> To post a message, send an e-mail to: BRLTTY at mielke.cc
>>> For general information, go to: http://mielke.cc/mailman/listinfo/brltty
>>>
>> _______________________________________________
>> This message was sent via the BRLTTY mailing list.
>> To post a message, send an e-mail to: BRLTTY at mielke.cc
>> For general information, go to: http://mielke.cc/mailman/listinfo/brltty
>>
>
> _______________________________________________
> This message was sent via the BRLTTY mailing list.
> To post a message, send an e-mail to: BRLTTY at mielke.cc
> For general information, go to: http://mielke.cc/mailman/listinfo/brltty


More information about the BRLTTY mailing list