Hello,
I worked on it, and I correct things in my python block and my grc file. It works when I put QT GUI Time Sink blocks, than Histogramms block. You can fin the update here : https://github.com/Krounet/gnuradio-WSPR/tree/development/WSPR-Tx
Best Regards
Mathieu
Le ven. 23 févr. 2024 à 17:25, Croizer Mathieu <croizer.mathieu@gmail.com> a écrit :
Hello,I would like to simulate the simulation of a WSPR transmission with GNURADIO. First I created a python block for WSPR coding process. The output of my python block is connected to a Pack K Bits block to create packs of bytes of 8 bits. It is also connected to a QT GUI Histogramm, to verify if there is something at the output. The Pack K Bits block is also connected to a QT GUI Histogramm. When I launch my gnuradio file, The two histogramms show a pike at 0. So think I think there is nothing at the output of my python block. But, in my code I put some prints to show what happens at the output, and they indicates that there are zeroes and ones. So I don't understand what happens, and I need some Help.This is my python block work function :def work(self,input_items,output_items):
"""
What do we do here ? :
_ The Callsigns and the Location + Power are compressed in two integer N and M
_ N is calculated with these equations :
* N1 = [Ch1] -> [Chn] is the n character in decimal of the Callsigns modified by the function transform_Callsigns()
* N2 = N1 * 36 + [Ch2]
* N3 = N2 * 10 + [Ch3]
* N4 = 27 * N3 + [Ch4] - 10
* N5 = 27 * N4 + [Ch5] - 10
* N = N6 = 27 * N5 + [Ch6] - 10
_ M is calculated with these equations :
* M1= (179 - 10 * [Loc1] - [Loc3]) * 180 + 10 * [Loc2] + [Loc4] -> [Locn] is the n character in decimal of the Location modified by the function transform_Location()
* M = M1 * 128 + [Pwr] + 64 -> [Pwr] is the power in dBm
"""
#time.sleep(5)
codingN=self.transform_Callsigns()
codingM=self.transform_Location()
#creating the 88 elements array to encode. The array will be packed then in 11 8-bits bytes array c[0] to c[6] will contain the informations to transmit.c[6] will contain the 2 two las bit of M and is completed by zeroes. c[7] to c[10] is filled with zeroes
#serializing N
n_Serial=np.byte([bit for bit in codingN])
#serializing M
m_Serial=np.hstack((np.byte([bit for bit in codingM]),np.byte([0,0,0,0,0,0])))
#creating c[7] to c[10]
c7toc10bin=np.binary_repr(0,32)
c7toc10=np.byte([bit for bit in c7toc10bin])
#stacking the arrays
bitstreams=np.hstack((n_Serial,m_Serial,c7toc10))
#output_items[0]=bitstreams
for x in range(len(bitstreams)):
output_items[0]=bitstreams[x]
print(output_items[0])
#print("length of the Block Output: "+str(len(output_items[0])))
return len(bitstreams)You can find all the code here : https://github.com/Krounet/gnuradio-WSPR/tree/development/WSPR-TxBest Regards.Mathieu
No comments:
Post a Comment