Translate Perl to Dos

Discussion forum for all Windows batch related topics.

Moderator: DosItHelp

Post Reply
Message
Author
darioit
Posts: 230
Joined: 02 Aug 2010 05:25

Translate Perl to Dos

#1 Post by darioit » 21 Sep 2014 03:27

Hello, I find this Perl code.

Code: Select all

# Reads data from a Current Cost device via serial port.

use strict;
use Device::SerialPort qw( :PARAM :STAT 0.07 );

my $PORT = "/dev/ttyS0";

my $ob = Device::SerialPort->new($PORT);
$ob->baudrate(2400);
$ob->write_settings;

open(SERIAL, "+>$PORT");
while (my $line = <SERIAL>) {
if ($line =~ m!<ch1><watts>0*(\d+)</watts></ch1>.*<tmpr> *([\-\d.]+)</tmpr>!) {
        my $watts = $1;
        my $temp = $2;
        print "$watts, $temp\n";
    }
}


But I prefer Dos code, anyone are able to only if code line?

This is my XML code

<msg><src>CC128-v0.11</src><dsb>01591</dsb><time>11:17:00</time><hist><dsw>01591</dsw><type>1</type><units>kwhr</units><data><sensor>0</sensor><d082>2.929</d082><d081>2.945</d081><d080>2.960</d080><d079>2.976</d079></data><data><sensor>1</sensor><d082>0.000</d082><d081>0.000</d081><d080>0.000</d080><d079>0.000</d079></data><data><sensor>2</sensor><d082>0.000</d082><d081>0.000</d081><d080>0.000</d080><d079>0.000</d079></data><data><sensor>3</sensor><d082>0.000</d082><d081>0.000</d081><d080>0.000</d080><d079>0.000</d079></data><data><sensor>4</sensor><d082>0.000</d082><d081>0.000</d081><d080>0.000</d080><d079>0.000</d079></data><data><sensor>5</sensor><d082>0.000</d082><d081>0.000</d081><d080>0.000</d080><d079>0.000</d079></data><data><sensor>6</sensor><d082>0.000</d082><d081>0.000</d081><d080>0.000</d080><d079>0.000</d079></data><data><sensor>7</sensor><d082>0.000</d082><d081>0.000</d081><d080>0.000</d080><d079>0.000</d079></data><data><sensor>8</sensor><d082>0.000</d082><d081>0.000</d081><d080>0.000</d080><d079>0.000</d079></data><data><sensor>9</sensor><d082>0.000</d082><d081>0.000</d081><d080>0.000</d080><d079>0.000</d079></data></hist></msg>
<msg><src>CC128-v0.11</src><dsb>01591</dsb><time>11:17:02</time><tmpr>23.4</tmpr><sensor>0</sensor><id>00077</id><type>1</type><ch1><watts>00221</watts></ch1></msg>
<msg><src>CC128-v0.11</src><dsb>01591</dsb><time>11:17:08</time><tmpr>23.4</tmpr><sensor>0</sensor><id>00077</id><type>1</type><ch1><watts>00228</watts></ch1></msg>
<msg><src>CC128-v0.11</src><dsb>01591</dsb><time>11:17:10</time><hist><dsw>01591</dsw><type>1</type><units>kwhr</units><data><sensor>0</sensor><d078>2.953</d078><d077>3.015</d077><d076>2.953</d076><d075>2.992</d075></data><data><sensor>1</sensor><d078>0.000</d078><d077>0.000</d077><d076>0.000</d076><d075>0.000</d075></data><data><sensor>2</sensor><d078>0.000</d078><d077>0.000</d077><d076>0.000</d076><d075>0.000</d075></data><data><sensor>3</sensor><d078>0.000</d078><d077>0.000</d077><d076>0.000</d076><d075>0.000</d075></data><data><sensor>4</sensor><d078>0.000</d078><d077>0.000</d077><d076>0.000</d076><d075>0.000</d075></data><data><sensor>5</sensor><d078>0.000</d078><d077>0.000</d077><d076>0.000</d076><d075>0.000</d075></data><data><sensor>6</sensor><d078>0.000</d078><d077>0.000</d077><d076>0.000</d076><d075>0.000</d075></data><data><sensor>7</sensor><d078>0.000</d078><d077>0.000</d077><d076>0.000</d076><d075>0.000</d075></data><data><sensor>8</sensor><d078>0.000</d078><d077>0.000</d077><d076>0.000</d076><d075>0.000</d075></data><data><sensor>9</sensor><d078>0.000</d078><d077>0.000</d077><d076>0.000</d076><d075>0.000</d075></data></hist></msg>
<msg><src>CC128-v0.11</src><dsb>01591</dsb><time>11:17:14</time><tmpr>23.4</tmpr><sensor>0</sensor><id>00077</id><type>1</type><ch1><watts>00232</watts></ch1></msg>
<msg><src>CC128-v0.11</src><dsb>01591</dsb><time>11:17:20</time><hist><dsw>01591</dsw><type>1</type><units>kwhr</units><data><sensor>0</sensor><d074>2.960</d074><d073>3.140</d073><d072>3.695</d072><d071>9.242</d071></data><data><sensor>1</sensor><d074>0.000</d074><d073>0.000</d073><d072>0.000</d072><d071>0.000</d071></data><data><sensor>2</sensor><d074>0.000</d074><d073>0.000</d073><d072>0.000</d072><d071>0.000</d071></data><data><sensor>3</sensor><d074>0.000</d074><d073>0.000</d073><d072>0.000</d072><d071>0.000</d071></data><data><sensor>4</sensor><d074>0.000</d074><d073>0.000</d073><d072>0.000</d072><d071>0.000</d071></data><data><sensor>5</sensor><d074>0.000</d074><d073>0.000</d073><d072>0.000</d072><d071>0.000</d071></data><data><sensor>6</sensor><d074>0.000</d074><d073>0.000</d073><d072>0.000</d072><d071>0.000</d071></data><data><sensor>7</sensor><d074>0.000</d074><d073>0.000</d073><d072>0.000</d072><d071>0.000</d071></data><data><sensor>8</sensor><d074>0.000</d074><d073>0.000</d073><d072>0.000</d072><d071>0.000</d071></data><data><sensor>9</sensor><d074>0.000</d074><d073>0.000</d073><d072>0.000</d072><d071>0.000</d071></data></hist></msg>
<msg><src>CC128-v0.11</src><dsb>01591</dsb><time>11:17:20</time><tmpr>23.4</tmpr><sensor>0</sensor><id>00077</id><type>1</type><ch1><watts>00225</watts></ch1></msg>
<msg><src>CC128-v0.11</src><dsb>01591</dsb><time>11:17:26</time><tmpr>23.4</tmpr><sensor>0</sensor><id>00077</id><type>1</type><ch1><watts>00246</watts></ch1></msg>
<msg><src>CC128-v0.11</src><dsb>01591</dsb><time>11:17:30</time><hist><dsw>01591</dsw><type>1</type><units>kwhr</units><data><sensor>0</sensor><d070>9.507</d070><d069>7.359</d069><d068>9.039</d068><d067>8.320</d067></data><data><sensor>1</sensor><d070>0.000</d070><d069>0.000</d069><d068>0.000</d068><d067>0.000</d067></data><data><sensor>2</sensor><d070>0.000</d070><d069>0.000</d069><d068>0.000</d068><d067>0.000</d067></data><data><sensor>3</sensor><d070>0.000</d070><d069>0.000</d069><d068>0.000</d068><d067>0.000</d067></data><data><sensor>4</sensor><d070>0.000</d070><d069>0.000</d069><d068>0.000</d068><d067>0.000</d067></data><data><sensor>5</sensor><d070>0.000</d070><d069>0.000</d069><d068>0.000</d068><d067>0.000</d067></data><data><sensor>6</sensor><d070>0.000</d070><d069>0.000</d069><d068>0.000</d068><d067>0.000</d067></data><data><sensor>7</sensor><d070>0.000</d070><d069>0.000</d069><d068>0.000</d068><d067>0.000</d067></data><data><sensor>8</sensor><d070>0.000</d070><d069>0.000</d069><d068>0.000</d068><d067>0.000</d067></data><data><sensor>9</sensor><d070>0.000</d070><d069>0.000</d069><d068>0.000</d068><d067>0.000</d067></data></hist></msg>
<msg><src>CC128-v0.11</src><dsb>01591</dsb><time>11:17:32</time><tmpr>23.4</tmpr><sensor>0</sensor><id>00077</id><type>1</type><ch1><watts>00228</watts></ch1></msg>
<msg><src>CC128-v0.11</src><dsb>01591</dsb><time>11:17:38</time><tmpr>23.4</tmpr><sensor>0</sensor><id>00077</id><type>1</type><ch1><watts>00280</watts></ch1></msg>
<msg><src>CC128-v0.11</src><dsb>01591</dsb><time>11:17:40</time><hist><dsw>01591</dsw><type>1</type><units>kwhr</units><data><sensor>0</sensor><d066>9.039</d066><d065>6.882</d065><d064>3.367</d064><d063>3.453</d063></data><data><sensor>1</sensor><d066>0.000</d066><d065>0.000</d065><d064>0.000</d064><d063>0.000</d063></data><data><sensor>2</sensor><d066>0.000</d066><d065>0.000</d065><d064>0.000</d064><d063>0.000</d063></data><data><sensor>3</sensor><d066>0.000</d066><d065>0.000</d065><d064>0.000</d064><d063>0.000</d063></data><data><sensor>4</sensor><d066>0.000</d066><d065>0.000</d065><d064>0.000</d064><d063>0.000</d063></data><data><sensor>5</sensor><d066>0.000</d066><d065>0.000</d065><d064>0.000</d064><d063>0.000</d063></data><data><sensor>6</sensor><d066>0.000</d066><d065>0.000</d065><d064>0.000</d064><d063>0.000</d063></data><data><sensor>7</sensor><d066>0.000</d066><d065>0.000</d065><d064>0.000</d064><d063>0.000</d063></data><data><sensor>8</sensor><d066>0.000</d066><d065>0.000</d065><d064>0.000</d064><d063>0.000</d063></data><data><sensor>9</sensor><d066>0.000</d066><d065>0.000</d065><d064>0.000</d064><d063>0.000</d063></data></hist></msg>


Thank you in advance and best regards

aGerman
Expert
Posts: 4745
Joined: 22 Jan 2010 18:01
Location: Germany

Re: Translate Perl to Dos

#2 Post by aGerman » 21 Sep 2014 04:11

I'm not familiar with Perl. You should certainly explain what the script does. All I can see is that it uses Regular Expressions which is inappropriate to parse markup languages.
Please read this legendary thread about parsing Markup using Regex ...
It's about HTML but valid for any other markup language as well.

Nevermind. The Regex support is even worse and there are length limits etc. why I strictly recomment you NOT to use Batch in that case.

Regards
aGerman

Post Reply