Zdravím, měm k dispozici kód pythonovskej, který bych potřeboval překodovat do C, resp. C#. Ale jde mě o to, že nechápu syntaxi pyhonu a nemám čas a ani v plánu se ji učit. Co jsem si vygooglil, tak z toho jsem to stejně moc nepobral, tak bych byl velice vděčný za vaši pomoc. Pro vás to bude lahůdka. :) Takže mám následující kod:
ticks,pkt = packet[2:10], packet[10:-1] //packet[2] až [10] je uložen v poli ticks či kde?
ticks = struct.unpack('LL',ticks) // co udělá toto?
tstamp = ((ticks[0]*self.ticknb) + ticks[1]) * self.tscale //co je uloženo v tstamp? (self.tscale + self.ticknb jsou prostě nějaké konstanty)
t_sec = int(tstamp) //t_sec se rovná prostě přetypované tstamp ?
t_usec = int((tstamp-t_sec)*1.0e6) //
ts = struct.pack('LL',(t_sec+self.timebase),t_usec)
packet je pole bajtů od 1 do x. Přičemž packet[2..10] je to co mě zajímá. Moje otázky viz komentáře v kodu výše.
Jinak pokud to nějak pomůže vám..tvůrce kodu mě to vysvětlil takto, ale nepobírám to:
# Byte 2..10 holds the firmware representation of the time.
# it consists of two 32 bit numbers
# ticks[0] - is the current count of clock overflows for this packet
# ticks[1] - is the current number of clock ticks for this packet
ticks,pkt = packet[2:10], packet[10:-1]
# These constants are also needed, they depend on the firmware
# (F_CPU and timer configuration)
# self.ticknb - number of clock ticks until overflow.
# self.tscale - is the timebase (e.g. how long lasts one tick)
ticks = struct.unpack('LL',ticks)
tstamp = ((ticks[0]*self.ticknb) + ticks[1]) * self.tscale
# now repack the values for wireshark
# self.timebase = int(time.time())
# (the Python code so far sends this value to the firmware too, but
# in fact it is not needed there anymore, because after some trials the
# conclusion was to compute the time value on the PC ... I'll remove it).
t_sec = int(tstamp)
t_usec = int((tstamp-t_sec)*1.0e6)
ts = struct.pack('LL',(t_sec + self.timebase),t_usec)